Strings and text processing, 6. Sum of big numbers.
Здравейте колеги,
Нещо много забих на тази задача, по два различни начина я пререшавам и ми се струва, че подхода ми просто не е правилен.
https://pastebin.com/8TYXTFam
Идеята ми беше, да конвертна всеки чар към инт, да ги вкарам в лист, да го ревърсна и готово... Появиха се повече усложнения отколкото очаквах. Взимам 60/100 в джъдж. Гърмят 3 и 4 тест. Решението според мен е ужасно, защотото си открих поне 2 грешки, които водят до рън тайм ерор, но джъдж не ги хваща, защото получавам "грешен отговор".
Мъката, и там където според мен е проблема, е когато се опитвам да пренеса "едно наум" в края на цикъла, но просто не мога да се сетя за по ефективен начин да го направя. Бих предпочел насоки пред готови решения, искам все пак да не получавам на готово, но ще съм благодарен на каквото и да е.
Ако не друго поне разбрах точно колко полезни са BigInteger и BigDecimal. :D
Изключително много благодаря. Изобщо не знаех за падинга, това прави задачата доста по лесна. Ако мога да попитам какво точно прави SkipWhile(x => x == '0')?
Мислех че е с цел да зпази нулите в инпут от типа: 00000005, 00000005, но и без него ги печаташе. Не можах точно да разбера, но без него се чупи 1 тест.
Мисля, че има тестове, където при входа пред числото има нули, които могат да объркат резултата ако не се махнат.
Ако имаш 05+4 трябва да върне 9, а без skipwhile ще върне 09.
Или просто още от входа му даваш .TrimStart('0');
Да, и това е вариант. Аз просто използвах SkipWhile. Варианти много. :)
Ти работиш със стрингове, а не с числа. Стринга не знае дали 010 е 10. Просто целта на задачата е да използваш стрингове, за да събираш числа, които богат да бъдат събрани само чрез BigInteger.
Извинявам се за невежеството, но аз продължавам да не разбирам нещо. 00000005 като число не е ли = 5? Щом няма десетична запетая нулите не се ли игнорират? Не мога да разбера защо при вход 00000005, 00000005 резултата е 10 а при 0000000000000000000000000000005, 0000000000000000000000000000005, резулатата е 5 с няколко нули зад него. Моето разбиране беше, че 5 + 5 трябва да върне 10 независимо колко нули има зад петиците.