Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

printРабочее место участника

printЗадачи

1794. Бактерии

Ограничения: время – 2s/4s, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

У юного биолога Антона в красивой стеклянной колбе живут n бактерий.
Добавляя различные реактивы в колбу, Антон может контролировать число бактерий. Так, если p – некоторое простое число, то Антон умеет в домашних условиях получать вещество Cp , которое, будучи добавленным в колбу, уменьшает число бактерий ровно в p раз. Если же число бактерий не делилось на p, то результат действия вещества неопределен, и эксперимент теряет научную точность. Этого Антон допустить не желает, поэтому он применяет вещество C_p\ H_{2p+1}\ "OH" только когда число бактерий делится на p.
Кроме того, у Антона на кухне есть неограниченный запас диэтиламида лизергиновой кислоты (C_20\ H_25\ N_3\ O). При добавлении в колбу с бактериями диэтиламида лизергиновой кислоты, число бактерий возводится в квадрат.
Антон хочет, чтобы в колбе стало m бактерий. При этом он хочет добавлять какие-либо вещества в колбу наименьшее возможное число раз. Помогите ему сделать это.
Во входном файле содержатся два натуральных числа n и m (1\ ≤\ n,\ m\ ≤\ 10^9) – изначальное и желаемое число бактерий в колбе у Антона.
Если получить ровно m бактерий невозможно, выведите в выходной файл слово Impossible.
Если же искомый результат достижим, выведите кратчайшую последовательность добавлений веществ, которая позволяет его достичь, в следующем формате: добавление вещества C_p\ H_{2p+1}\ "OH" кодируется числом p, добавление вещества C_20\ H_25\ N_3\ O – числом 0. Числа должны быть разделены пробелами и/или переводами строк.
Если существует несколько кратчайших последовательной добавлений веществ, оставляющих m бактерий, выведите любую из них.

Пример ввода 1

12 18

Пример вывода 1

2 0 2

Пример ввода 2

56 6

Пример вывода 2

Impossible
В первом примере Антону требуется добавлять в колбу вещества три раза: сначала добавить C_2\ H_5\ "OH", уменьшая число бактерий в два раза, то есть оставляя 6 бактерий; затем добавить C_20\ H_25\ N_3\ O, возводя число бактерий в квадрат, то есть увеличивая его до 36; и наконец, добавить снова C_2\ H_5\ "OH", деля число бактерий на два и делая его равным 18.
Источник: командный чемпионат школьников Санкт-Петербурга по программированию, 2010
loading