Kaspichan Numbers Java

Здравейте,

Опитвам се да реша задача Kaspichan Numbers на Java. Получавам грешки на някои проверки, но не мога да разбера защо :frowning: Моля за помощ. Кодът ми: https://pastebin.com/bvkSCXYx

Благодаря Ви за съдействието =)

Здравей, Младен,
На ред 41 от кода стринговете helper и String.valueOf(alphabet[input.mod(modulo).intValue()]) в дясната страна на оператора за присвояване трябва да се долепят в обратен ред (както е направено на ред 46).
Поздрави,
Иван

Благодаря! Така се получи. Направо ме е срам, че след толкова взиране в кода съм го пропуснал това :sweat_smile:

Няма за какво - понякога грешките се виждат по-лесно отстрани.

Въпреки че това няма значение за крайния резултат, бих предложил да се махнат извикването на String.valueOf() от ред 25, както и оператора continue от ред 26. Също така променливата modulo, въведена на ред 39, може да бъде дефинирана преди началото на цикъла while. Конкатенацията на стрингове в тялото на цикъла for също може да се избегне. Например, двойката символни променливи elem и elem2 могат да се заменят с масив char[] elems = new char[2], дефиниран преди началото на цикъла, така че elem да съответства на еlems[0], еlem2 - на elems[1]. Тогава преобразуването от char[] в String може да стане със String.valueOf(elems). Това са само козметични промени, за които не мога да кажа дали биха имали някакъв ефект върху времето за изпълнение на програмата.

От друга стране, тъй като в тази конкретна задача основата на бройната система, 256 = 2^8, е точно равна на броя на различните неотрицателни цели числа, които се побират в един байт, преобразуването на бройните системи може да стане и без аритметични операции с BigIntеger, а с директно презаписване на редицата от байтове, съставящи съответното число от тип BigInteger, с цифрите, А, …, iV, дадени в условието на задачата. Този подход е подобен, например, на преобразуването на числа от двоична в шестнадесетична бройна система с групиране на двоичните цифри на даденото число в групи по 4.

1 Like