Good Bye 2018 |
---|
Закончено |
Факторизовать числа сложно. RSA Factoring Challenge предлагает $$$$100\,000$$$ тому, кто сможет факторизовать RSA-$$$1024$$$, $$$1024$$$-битное произведение двух простых чисел. До этого времени никому не удалось получить приз. Мы хотим факторизовать $$$1024$$$-битное число.
Поскольку ваш язык программирования может не предоставлять возможность работы с большими целыми числами, мы предоставим вам очень простой калькулятор.
Чтобы использовать этот калькулятор, вы можете выводить запросы и получать ответы. Операции заключаются в следующем:
Найдите факторизацию $$$n$$$, которое является произведением от $$$2$$$ до $$$10$$$ различных простых чисел типа $$$4x + 3$$$, где $$$x$$$ — целое.
Из-за технических сложностей мы вынуждены ограничить количество запросов до $$$100$$$.
Единственная строка содержит одно целое число $$$n$$$ ($$$21 \leq n \leq 2^{1024}$$$). Гарантируется, что $$$n$$$ — произведение от $$$2$$$ до $$$10$$$ различных простых чисел типа $$$4x + 3$$$, где $$$x$$$ — целое.
Вы можете вывести столько запросов, сколько пожелаете, придерживаясь ограничения по времени (смотрите раздел «Протокол взаимодействия» для более подробной информации).
Когда вы считаете, что знаете ответ, выведите ! k p_1 p_2 ... p_k, где $$$k$$$ — количество простых множителей $$$n$$$, а $$$p_i$$$ — различные простые множители. Вы можете вывести их в любом порядке.
Входные данные для взломов
Чтобы взламывать решения, используйте следующий формат:
Первая строка должна содержать $$$k$$$ ($$$2 \leq k \leq 10$$$) — количество простых чисел у факторизации $$$n$$$.
Вторая строка должна содержать $$$k$$$ целых чисел $$$p_1, p_2, \dots, p_k$$$ ($$$21 \leq n \leq 2^{1024}$$$) — простые делители $$$n$$$. Все простые числа должны быть типа $$$4x + 3$$$ для некоторого целого числа $$$x$$$. Они все должны быть различны.
После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
Количество запросов не ограничено. Однако ваша программа должна (как всегда) завершиться за определенное время. Время работы интерактора также засчитывается в ограничение по времени. Максимальное время выполнения каждого запроса приведено ниже.
Обратите внимание, что пример ввода содержит дополнительные пустые строки, чтобы его было легче читать. Реальный ввод не будет содержать пустых строк и вам не нужно выводить дополнительные пустые строки.
21
7
17
15
17
11
-1
15
+ 12 16
- 6 10
* 8 15
/ 5 4
sqrt 16
sqrt 5
^ 6 12
! 2 3 7
Мы считываем с первой строки $$$n = 21$$$. Тогда мы делаем:
Мы пришли к выводу, что наш калькулятор работает, нужно прекратить дурачиться и понять, что $$$21 = 3 \cdot 7$$$.
Название |
---|