Темы --> Информатика --> Алгоритмы --> Арифметические алгоритмы --> Простые числа и разложение на множители
---> 9 задач <---
Страница: << 1 2 Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Вася продолжает изобретать последовательности. Сегодня в школе его познакомили с операцией возведения в степень, и Вася придумал новую последовательность.

Сначала он пишет на доске натуральное число \(A\). Каждое следующее число, выписанное им на доске, будет равно степени с основанием \(A\) и показателем, равным предыдущему числу. Другими словами, последовательность будет выглядеть так:

\(x[1] = A\),

\(x[k + 1] = A^{x[k]}\), \(k\) > 0

После этого он решил узнать элемент этой последовательности с минимальным номером, который бы делился на данное число \(N\). Поскольку числа на доске могут быть довольно большими, без вашей помощи ему не обойтись.

Входные данные

Вводятся два натуральных числа \(A\), \(N\) (\(1\) ≤ \(A\) ≤ \(10^9\), \(1\) ≤ \(N\) ≤ \(10^9\)).

Выходные данные

Если ни один элемент последовательности не делится на \(N\), выведите 0. Иначе выведите минимальный номер элемента рассмотренной последовательности, делящегося на \(N\).

Примеры
Входные данные
2 2
Выходные данные
1
Входные данные
2 4
Выходные данные
2
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Мальчик Влад недавно побывал в Японии и привёз оттуда новую жевательную резинку. Вернувшись в университет после поездки, на первой же паре Влад раздал жвачку всем своим \((N-1)\) однокурсникам и взял одну себе. Дождавшись момента, когда лектор отвернулся к доске, на счёт “три-четыре” все \(N\) студентов дружно начали надувать пузыри. Известно, что \(i\)-й студент надувает пузырь до максимально возможного размера за время \(t_i\), после чего пузырь мгновенно лопается, и студент начинает надувать пузырь заново с той же скоростью.

Всё это время преподаватель настолько увлечён тонкостями квантового математического анализа, что не слышит ничего происходящего в аудитории. И только когда все \(N\) пузырей лопнут одновременно, преподаватель услышит шум и обернётся. И уж тогда студентам достанется, а больше всех тому, кто принёс на пару \(N\) жевательных резинок.

Определите, сколько времени студенты смогут наслаждаться надуванием пузырей, не замечаемые преподавателем.

Например, если \(N=2\), \(t_1=2\), \(t_2=3\), то будет происходить следующее:

Первый студент надувает пузырь с момента времени \(t=0\) до момента времени \(t=2\), потом пузырь лопается, и он надувает пузырь заново — с момента времени \(t=2\) до момента времени \(t=4\), а потом ещё раз — с момента времени \(t=4\) до \(t=6\).

Второй студент надувает пузырь с \(t=0\) до \(t=3\) и ещё раз с \(t=3\) до \(t=6\).

В момент \(t=6\) пузыри лопаются одновременно у обоих студентов, преподаватель оборачивается и говорит: “Всё, Влад! Ты меня достал!”.

Входные данные

На первой строке входного файла находится одно целое число \(N\) — количество студентов (\(1\leq N \leq 10\,000\)). Следующие \(N\) строк содержат по одному целому числу \(t_1\), \(t_2\), ..., \(t_N\). Гарантируется, что \(1\leq t_i \leq 1000\).

Выходные данные

Выведите в выходной файл одно число — время, в течение которого студенты во главе с Владом могут наслаждаться безнаказанным надуванием пузырей.

Примеры
Входные данные
2
2
3
Выходные данные
6

Входные данные
1
1
Выходные данные
1

Входные данные
2
16
1
Выходные данные
16

Входные данные
3
627
182
85
Выходные данные
9699690

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Дано натуральное число N. Требуется написать программу, которая находит такое минимальное число M, произведение цифр которого равно N.

Входные данные

Вводится целое число N (1 ≤ N ≤ 2·106) .

Выходные данные

Выведите на экран одно число M  ≥ 10 или фразу «No solution». Число M должно начинаться со значащей цифры (не с нуля).

Примеры тестов

Входные данные
20
Выходные данные
45
Входные данные
1
Выходные данные
11
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

В фирме, в которой работает ваш друг, ввели новый дизайн билетов на маршрутки. Теперь номер билета может быть любым натуральным числом. Радостные пассажиры тут же придумали новый, очень простой способ определения счастливости номера билета. Он состоит в следующем. Пусть номер билета равен \(N\). Если \(N<10\), то счастливость числа \(N\) (т.е. и самого билета) равна \(N\), иначе: посчитаем сумму цифр числа \(N\), пусть она равна \(S\) — тогда счастливость числа \(N\) будет равна счастливости числа \(S\).

Например, счастливость билета с номером \(7351\) равна счастливости билета с номером \(16\) (т.к. \(7+3+5+1=16\)), а она в свою очередь равна счастливости билета с номером 7 (т.к. \(1+6=7\)), а последняя просто равна 7 (т.к. \(7<10\)).

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

Но и эта игра устроила не всех студентов. Наиболее активные из них заметили, что игра становится ещё более интересной, если раскладывать \(N\) не в сумму, а в произведение чисел, с целью, по-прежнему, максимизировать сумму счастливостей множителей.

Напишите программу, которая будет решать эту задачу, т.е. по данному \(N\) находить такое его представление \(N=a_1\cdot a_2\cdot \ldots\), где все \(a_i\) натуральны, больше единицы, и суммарная счастливость чисел \(a_1\), \(a_2\), ... максимальна.

Входные данные

Для вашего удобства номер билета \(N\) задан его разложением на простые множители. Таким образом, первая строка входного файла содержит одно натуральное число — количество множителей в разложении числа \(N\) на простые, а далее следуют сами множители. \(N\) не превосходит \(10^{18}\), а каждый простой множитель не превосходит \(10^9\).

Если оптимальных решений несколько, выведите любое.

Выходные данные

В выходной файл выведите искомое разложение \(N\) на множители. А именно, сначала выведите количество множителей в вашем разложении, а потом — сами множители.

Примечание

Если ваша программа будет проходить тесты, в которых \(N\leq 10^9\), то она получит не менее 30 баллов.

Примеры
Входные данные
3
2 2 3
Выходные данные
2
6 2
Входные данные
2
2 11
Выходные данные
2
2 11

Страница: << 1 2 Отображать по:
Выбрано
:
Отменить
|
Добавить в контест