Добрый вечер.
Правильно ли я понимаю, что метод getNumbers(long N) должен проанализировать все значения от нуля аж до возможного Long.MAX_VALUE да ещё и за 10 секунд?
Kirill Tezikov
25 уровень
Прошу пояснить условия задачи
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Leonid Kucheruk
20 февраля 2018, 09:47
Long.MAX_VALUE имеется в виду для 64 bit ной машины? Сколько чисел в long может быть 19 или 10?
0
Pavlo Plynko Java-разработчик в CodeGym Expert
18 сентября 2017, 15:20
Смотря что понимать под "проанализировать все значения".
Например, если 8208 = 8*8*8*8 + 2*2*2*2 + 0*0*0*0 + 8*8*8*8,
то 8280 уже можно и не анализировать (т.е. мы мысленно проанализировали эту ситуацию, и в методе этого можно уже не делать), и т.д.
0
Kirill Tezikov
18 сентября 2017, 15:35
Я так понял задачу: нужно проверить все числа от нуля до заданного числа, не включая его. Если задача мной понята верно, то у меня проблемы с реализацией. Я догадался сделать таблицу возведения числа (от 0 до 9) в степень (от 0 до 18) в виде двумерного массива, чтобы многократно не вызывать Math.pow(). Но даже если сделать пустой цикл
то время его выполнения будет просто огромным. Следовательно, нужно по какому-то принципу отбрасывать интервал чисел, но я не понимаю этого принципа. 0
Pavlo Plynko Java-разработчик в CodeGym Expert
19 сентября 2017, 08:51
Эти числа, которые нужно найти - имеют собственное название (как например "простые" числа или числа "Фибоначчи"). Если погуглить и найти, что это за числа, то найдутся и алгоритмы их поиска.
0
Kirill Tezikov
19 сентября 2017, 13:49
Я знаю, что речь идёт о числах Армстронга. Искать в Интернете готовый алгоритм никакого смысла я не вижу, ибо смысл задачи как раз и состоит в том, чтобы я сам додумался до эффективного алгоритма. Мой коллега со стажем программирования 17 лет сделал эту задачу минут за 10, между прочим.
0
Сергеев ВикторMaster
17 сентября 2017, 19:34
Да
0