KaspichanNumbers

Здравейте,

тъй като решението ми гърми с TLE го пуснах на друга версия на Джава, но се появиха последните 3 - 4 теста с IR. Има ли вариант някой да погледне решението ми и да сподели мнение?

Здравейте, имам решение, което е на крачка от вярното. Удобно ли е да го публикувам тук?

Здравей,

Няма проблем да публикуваш решението си - добре е да използваш инструмент като https://pastebin.com/ за целта.

Стелян

Колега доста се мъчих с тази задача но изгледах една лекция от бройни системи … и ми се видя дори Лесна(снощи ми мина 100 от 100) :slight_smile: съветвам те да направиш същото.
Иначе като насоки мога да ти кажа : 1. със 2 фор цикъла си напълни числата по каспичанската бройна система в лист ( от 0 до 255 ) , 2. и след това с един Уайл цикъл и модулно и цялочислено делене на 256 (тъй като бройната система е 256 - тична ) Вярвам че ще се справиш ! Успех , дано съм бил полезен :wink:

1 Like

Колега а ако смяташ , че логиката ти е напълно вярна пробвай да четеш с ulong ( за с#) тъй като щом ти давам IR най вероятно е ексепшън заради число от инпута което не се събита в твоята променлива.

А на някой хрумва ли му по-успешен начин да чете като с ulong за C#, само че под Java 1.8, защото опитах със String -
String type = in.next("\d{1,21}");
Long input = Long.parseUnsignedLong(type);
но нещо не се получава под Java 8 - точно тогава дава грешката описана по-горе - TLE?

Същият код на Java 9 минава, но с java.lang.IndexOutOfBoundsException на 21 и 22ра проверка.
Не ми хрумна нищо за Java 8 с ulong, което да минава… :frowning:
Двата ми кода са тези (следвал съм логиката от лекциите за C#):
https://pastebin.com/YH8nLreA
и
https://pastebin.com/TuFwLt6h
Мерси предварително!

Това ми беше решението, но работи само до границата на Integer. По-късно ще опитам да го завъртя с Double понеже и long е къс :slight_smile:

long е къс да защото рейнджа му е -9223372036854775808 до 9223372036854775807 … ,а по задача рейнджа ти е 0 до 18446744073709551615 … което са точно границите на Ulong… затова съм ти написал Ulong а не long . Иначе като Жокер на 18446744073709551615 - това число програмата трябва да ти изкара резултат : iViViViViViViViV , това локално ако ти мине , ще мине и в джъдж :wink:

Описаните от мен по-горе две решения минават локално на Java (IntelliJ) и дават именно резултата iViViViViViViViV. Но като се качи в Judge - дават въпросната грешка (дори и на Java 9) - java.lang.IndexOutOfBoundsException.
Затова съм качил въпроса.
На C# същото без cast-ване от ulong - работи без проблем.
Въпросът е с Java как да мине тази граница.

Здравей.
Може би, това ще ти свърши работа https://www.geeksforgeeks.org/biginteger-class-in-java/
Успех.

Привет,

java.lang.IndexOutOfBoundsException се хвърля когато искаш да достъпиш индекс, който е извън рамките на масива ти. В случая няма общо с типа данни, а със самата ти логика. Това което ти препоръчвам е да се опиташ да дебъгнеш програмата и да видиш къде се разминават очакванията ти с релно какво се случва.

Поздрави,
Стелян.

Здравейте,

Понеже по-горе така и не видях решение на проблема с TLE при Java, моля за съдействие как да оптимизирам кода, понеже и моят гърми TLE [>0.100s, 27.95 MB]

https://pastebin.com/EKM3wGWq

Благодаря.

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

Може ли да пробваш заместо стринг да използваш StringBuilder?
Според мен така ще забързаш доста програмата, понеже при всяка result+ операция създаваш нов стринг.

Поздрави,
Мишо

Може да използваш ulong заместо BigInt.
Също така да знаеш, че трябва да направиш Exception за 0 :slight_smile:

Привет,

Благодаря за бързите отговори. Пробвах StringBuilder, но отново ми е TLE, а относно ulong, може и да греша, но не виждам такъв тип данни в java и inteliJ IDEA.

Здравейте,

Има ли някакви други идеи за тази задача?

Моето решение също не минава заради TLE [>0,100s, 28,3 MB].

Изглежда трябва да ползваме BigInteger и Array/ArrayLists, но така решенията стават твърде тежки, за да се вместят в условието (поне за Java).

Изпрати го на Java9

Здравей Пешо,
може да опиташ отново да събмитнеш решенито си :slight_smile:

Благодаря! Всичко е наред сега.