Большое число, маленькие числа


Еженедельный вызов 176

Задача, Мои решения

Задача 1: Переменные кратные

Задача

Напишите скрипт для нахождения наименьшего положительного целого числа x такого, что x, 2x, 3x, 4x, 5x и 6x являются перестановочными кратными друг друга.

Мое решение

Это одна из задач, где мы могли бы переработать решение, чтобы сделать его быстрее. Учитывая, что решение может быть найдено за доли секунды, в этом нет необходимости.

Например, после 1 666 следующее возможное решение — 100 000. В результате 1667 × 6 получится пятизначное число, которое не может быть перестановкой исходного числа.

Самый простой способ выяснить, является ли число перестановкой, — просто отсортировать числа по порядку. В Python мы можем сделать это с помощью ''.join(sorted(str(num))). В то время как join '', sort split //, $num сделает аналогичную вещь в Perl.

Как и во многих других задачах, у меня есть счетчик, который начинается с единицы и увеличивается до тех пор, пока мы не найдем решение. Для каждого числа мы выясняем, является ли число, умноженное от 2 до 6, перестановкой исходного числа, и выходим из внутреннего цикла, если это не так.

Наконец, когда решение найдено, я вывожу его на печать и выхожу из функции main().

Знаете ли вы? Решение (142 857) имеет свою собственную страницу в Википедии.

Примеры

$ ./ch-1.py 
142857

$ ./ch-1.pl
142857
Войти в полноэкранный режим Выход из полноэкранного режима

Задача 2: Обратимые числа

Задание

Напишите скрипт для поиска всех обратимых чисел меньше 100. Число считается обратимым, если сумма этого числа и его обратной части состоит только из нечетных цифр.

Мое решение

Это относительно простая задача. Считайте от 1 до 99 и добавляйте в список solutions, если число является обратимым.

Поскольку в python нет простого способа обратить целое число, я преобразовываю его в строку и обратно в целое число с помощью int(str(num)[::-1]). В Perl это просто делается с помощью метода reverse. Чтобы проверить, является ли число нечетным, я сравниваю его с регулярным выражением ^[13579]+$.

Затем я вывожу все числа в списке solutions.

Примеры

$ ./ch-2.py 
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90

$ ./ch-2.pl 
10, 12, 14, 16, 18, 21, 23, 25, 27, 30, 32, 34, 36, 41, 43, 45, 50, 52, 54, 61, 63, 70, 72, 81, 90
Войти в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий