KaspichanNumbers

preparation

#1

Здравейте,

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


#2

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


#3

Здравей,

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

Стелян


#4

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


#5

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


#6

А на някой хрумва ли му по-успешен начин да чете като с 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
Мерси предварително!


#7

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


#8

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


#9

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


#10

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


#11

Привет,

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

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