Loading...
Danisimo avatar Danisimo 1 Точки

Strings and text processing, 6. Sum of big numbers.

Здравейте колеги,

Нещо много забих на тази задача, по два различни начина я пререшавам и ми се струва, че подхода ми просто не е правилен.
https://pastebin.com/8TYXTFam
Идеята ми беше, да конвертна всеки чар към инт, да ги вкарам в лист, да го ревърсна и готово... Появиха се повече усложнения отколкото очаквах. Взимам 60/100 в джъдж. Гърмят 3 и 4 тест. Решението според мен е ужасно, защотото си открих поне 2 грешки, които водят до рън тайм ерор, но джъдж не ги хваща, защото получавам "грешен отговор".
Мъката, и там където според мен е проблема, е когато се опитвам да пренеса "едно наум" в края на цикъла, но просто не мога да се сетя за по ефективен начин да го направя. Бих предпочел насоки пред готови решения, искам все пак да не получавам на готово, но ще съм благодарен на каквото и да е.

Ако не друго поне разбрах точно колко полезни са BigInteger и BigDecimal. :D

Тагове:
0
Fundamentals Module
AtanasovAtanas avatar AtanasovAtanas 414 Точки
Best Answer

Твърде много си усложнил задачата. Разгледай моето решение.

0
Danisimo avatar Danisimo 1 Точки

Изключително много благодаря. Изобщо не знаех за падинга, това прави задачата доста по лесна. Ако мога да попитам какво точно прави SkipWhile(x => x == '0')?
Мислех че е с цел да зпази нулите в инпут от типа: 00000005, 00000005, но и без него ги печаташе. Не можах точно да разбера, но без него се чупи 1 тест.

0
Jeliozver avatar Jeliozver 356 Точки

Мисля, че има тестове, където при входа пред числото има нули, които могат да объркат резултата ако не се махнат.

0
AtanasovAtanas avatar AtanasovAtanas 414 Точки

Ако имаш 05+4 трябва да върне 9, а без skipwhile ще върне 09.

0
27/10/2017 11:16:47
Jeliozver avatar Jeliozver 356 Точки

Или просто още от входа му даваш .TrimStart('0');

0
AtanasovAtanas avatar AtanasovAtanas 414 Точки

Да, и това е вариант. Аз просто използвах SkipWhile. Варианти много. :)

0
AtanasovAtanas avatar AtanasovAtanas 414 Точки

Ти работиш със стрингове, а не с числа. Стринга не знае дали 010 е 10. Просто целта на задачата е да използваш стрингове, за да събираш числа, които богат да бъдат събрани само чрез BigInteger. 

0
Danisimo avatar Danisimo 1 Точки

Извинявам се за невежеството, но аз продължавам да не разбирам нещо. 00000005 като число не е ли = 5? Щом няма десетична запетая нулите не се ли игнорират? Не мога да разбера защо при вход 00000005, 00000005 резултата е 10 а при 0000000000000000000000000000005, 0000000000000000000000000000005, резулатата е 5 с няколко нули зад него. Моето разбиране беше, че 5 + 5 трябва да върне 10 независимо колко нули има зад петиците.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.