Алгоритмы-числа

  • 20
  • Недоступна
Ура, задачи на алгоритмы! Их очень любят резиденты планеты Линейный Хаос. И вы должны любить, по крайней мере, до того момента, как пройдёте пару-тройку собеседований. Итак, у вас есть число из некоторого количества чисел. Нужно найти все числа меньше N, которые удовлетворили бы некоторому критерию (о нём узнаете в самой задаче!).
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (561)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Антон
22 уровень, Москва
11 мая, 06:28
Задача - огонь) Считай неделю убил... (По часу в день, примерно... Работа мешает заниматься)... Итог на Long.MAX_VALUE: memory 11944 time = 2
Андрей
32 уровень, Москва
10 мая, 19:58
сидишь, тупишь, потом такой а пошло все вж..у, заполнил массив числами армстронга, и читаешь все что меньше Н, а он тебе Ты не прав, не те числа
Дмитрий
27 уровень, Санкт-Петербург
9 мая, 20:48
Честно сказать, у меня просто нет слов. задача супер крутая. пока самое сложное что я тут видел. Сразу не решил, вернулся через несколько месяцев. В общей сложности ушло где-то дня три. Для следующих поколений: 1. Если решите воспользоваться алгоритмом в котором разряд следующего числа должен быть не меньше предыдущего, подумайте о нулях. Они при таком условии вылетают, и число, к примеру 370, вы не найдете 2. Генерируйте таблицу (двоичный массив) со степенями, это на порядки ускоряет работу программы 3. не используйте Math.pow(). На больших числах он будет считать некорректно 4. Каждое действие оформляйте отдельным методом, это очень упростит вам жизнь. Тестируйте каждый метод на момент написания комента эту задачу решили 6702 учеников. P.S. Поставьте лайк кому не жалко)))
Артём
35 уровень, Гродно
11 мая, 10:42
1. Если решите воспользоваться алгоритмом в котором разряд следующего числа должен быть не меньше предыдущего, подумайте о нулях. Они при таком условии вылетают, и число, к примеру 370, вы не найдете Не обязательно. Можно на стадии когда сгенерим 37 просто перебрать суммы разных степеней и получить 370. Тобиш 3^2 + 7^2 затем 3^3 + 7^3 затем 3^4 + 7^4. Проверять степени до тех пор пока числа получаются меньше чем N.
gen
32 уровень, Москва
13 мая, 07:42
Я вообще с нулями не парился. Они имеют значение только при сравнении результата и набора цифр. При вычислениях ноль в любой степени ноль. При сравнении переводил результат вычисления в массив с лишними нолями до длинны массива проверяемых цифр, сортировал массивы. Сравнивал их, и вуаля.
5 мая, 14:44
Часик - не более.В условии нигде не написано, что мы должны вычислить числа Числа Армстронга. Когда есть еще ограничения на время и память, считать табличные значения не рационально
Денис
20 уровень, Москва
4 мая, 10:01
Всем здравствовать! Потратив на решение неприлично много времени, я ее осилил. Но валидатор упорно не принимал решение. Только благодаря совету Сергей Novichok, я очистил список после копирования в массив и валидатор, наконец, принял решение. Есть у кого-нибудь возможность объяснить почему список должен быть пустым? Ну, и по традиции, для Long.MAX_VALUE: memory 379 time = 1 без рекурсий.
Любовь
24 уровень, Харьков
2 мая, 18:59
Я вообще не понимаю что от меня хочет Валя!!!! Это просто ужас!!! Объясните, пожалуйста, - Метод getNumbers должен возвращать массив чисел удовлетворяющих условию задачи. это условие???
Igor
25 уровень, Минск
26 апреля, 19:01
gen
32 уровень, Москва
25 апреля, 16:26
Свершилось. Валя показал зелёный кружок. Несколько попыток потерял из-за невнимательности. Пропустил что числа должны быть натуральными, ноль был лишним. Так же была пара интересных граблей. Опишу может кому облегчит задачу. Основное при переборе и проверке соответствия не стоит пользоваться Collections.sort. Съедает кучу времени. Второе это вычисление степени. Если через Mach.pow то будут ошибки. Результат получаем в double. Приведение к long видимо выходит не точное. Обнаружил при вычислениях 7^19, 9^17, 9^18, 9^10. После создания массива степеней, заменил значения на правильные в соответствующих ячейках. Вообщем, главное было понять принцип перебора, хорошо описано у Артёма во втором посте. Потом всё пошло как по маслу. Перебор 17 строк и проверка с преобразованиями 25 строк.
Александр
23 уровень, Москва
24 апреля, 05:53
Да есть же ж!!! Код крайне макаронный получился, но зато время и память огонь!!! при N = Long.MAX_VALUE; memory 5238 time = 2 Всем желаю удачи с этой задаче - точно не помешает ;)
Константин
27 уровень, Харьков
20 апреля, 22:36
Ура-а-а-а, я это сделал!!! 3 дня на 1 задачу, такого у меня еще не было и близко... 🤪🤯 при Long.Max_VALUE : memory 3370 time = 5