while (myNumber != 0) {
if (myNumber > 2) {
ost = myNumber % 3;
myNumber /= 3;
queue.add(ost);
if (ost == 2) myNumber++;
} else {
queue.add(myNumber);
myNumber = 0;
}
}
Почему без этой строчки получается что не каждое число проходит? Я же не должен по правилам приведения в другую систему счисления так делать???Anton
36 уровень
Почему в случае если остаток 2 я должен к числу прибавить 1?
Обсуждается
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Александра Головко
6 июля 2018, 06:48
Не знаю касательно валидатора, вот то, что вижу я: в случае, когда остаток 1, результат деления на 3 принимает вид *целая часть*,333(3), а когда остаток 2 - *целая часть*,666(6). Соответственно, результат приводится к типу int и в первом случае округляется в меньшую сторону, а во втором - в большую. Т.е. при остатке 2 myNumber на один больше чем надо, и по моей логике вычесть надо, а не прибавить, не знаю, почему валидатор принимает это решение. По идее для правильной работы алгоритма достаточно не просто делить число на 3, а ещё использовать метод, который при этом округляет результат всегда в меньшую сторону.
0
Anton
6 июля 2018, 15:14
Самое интересное что есть онлайн калькулятор и его решение, его результат совпадает с моим решением. Ну и тем что валли требует. Вот и не понимаю, почему. Округления по идее не должно быть.
0
Alexandr Stolyarenko
5 июля 2018, 20:17
Я так понимаю что нужно перевести число в троичную систему? Если так - то методология не верна.
Попробуйте число 23 - в троичной должно быть 212.
0
Anton
5 июля 2018, 20:41
Да в нее. Этот код работает верно. Пробовал на различных числах и сравнивал с калькулятором. Вот только почему нужно прибавлять, округление, так о нем ни слова методологии перевод одного числа в другую систему счисления.
0
Alexandr Stolyarenko
5 июля 2018, 20:48
У вас вместо 212 будет 220. В каком месте он верно работает?!
0
Anton
6 июля 2018, 04:37
Верно относительно валли. Это из-за if (ost == 2) myNumber++; И без нее не проходит. Вот я и спрашиваю почему?
0
Артем DivertittoSenior Android-разработчи в United TechMaster
5 июля 2018, 10:48
Выложите весь код, для понимания проблеммы
0
Anton
6 июля 2018, 04:40
0