Loading...
g.kolev avatar g.kolev 82 Точки
Best Answer

Проблема идва от потенциалната дължина на числата, които се получават и при преобразуването към десетична бройна система се получават много големи числа. Както каза колегата, решението е BigInteger. Но ако пишеш алгоритъма за преобразуване на ръка (както подходих и аз), ще имаш проблем при вдигането на степен с Math.Pow(), както предполагам си подходил. Начина за вдигане на BigInteger на степен без загуба става с вградения метод в класа BigInteger.Pow().
Ето едно примерно решение.

5
28/02/2016 17:05:27
svetlozar_kirkov avatar svetlozar_kirkov 11 Точки

Аз писах на Java. При мен също не минаваха преди да сменя на BigInteger - input-а може да е доста дълъг(макс 150 букви) :)

Ето го джавешкото ми решение: http://pastebin.com/5V21zmA5

0
28/02/2016 16:51:45
radort avatar radort 8 Точки

Имаше колеги които казаха че им е BigInteger но не е минавал.Възможно е друго да съм сгрешил

0
Sanity avatar Sanity Trainer 194 Точки

Колегите дето бяха с BigInteger и не им минаваше правеха следното:

"...(BigInteger)Math.Pow(5, ...);"
и какво се получава ... Максималния брой символи в стринга е 150, а най-дългия SoftUni numeral е 3 символа ...
В най-лошия случай имаш 5 на 50-та степен...
Метода Math.Pow() вдига 5 на 50-та степен което е число което дори не мога да изговоря... Превърта 1000 пъти типа, който Math.Pow() връща, а именно double, и чак тогава castva към BigInteger... съответно ти реално получаваш някакъв милиард.
Което не е правилно.
Като използваш BigInteger.Pow(); той си умножава BigInteger типа, като не превърта нищо.

4
Kiril98 avatar Kiril98 66 Точки

Ето и на C# --> тук

Проблема като цяло е в това. че много хора не се сещаха за BigInteger. Също така в решението може да се види, че и самият multiplier също е BigInteger, за да не превърта и той. Няма друго към задачата. Елементарна е според мен.

-2
28/02/2016 18:14:39
mbeleva88 avatar mbeleva88 69 Точки

Чак елементарна не знам, но вече съм се научила да тествам с максималните възможни стойности от Constraints и като видях,че ми излизат минусови числа се усетих за BigInteger-a.

3
butanfire avatar butanfire 32 Точки

Само дето не се усетих за BigInterger.Pow .... :)

1
mbeleva88 avatar mbeleva88 69 Точки

Е, аз на изпита за първи път разбрах, че съществува такова нещо :) съвсем случайно го намерих в интернет... късмет :D 

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