Фрактальная раздробленность
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Старгородский "Союз меча и орала", куда обратились за
материальной помощью великий комбинатор и "гигант мысли, отец
русской демократии и особа, приближенная к императору", имел
довольно сложную структуру. Во-первых, союз делился на две
неравные фракции (одна из которых придерживалась монархических
взглядов, другая стояла за республику), но ни одна из фракций
не превышала другую по численности в 2 или более раза.
Во-вторых, каждая из фракций, в свою очередь, аналогичным
образом делилась на две подфракции (например, сторонников
абсолютной и конституционной монархии, парламентской и
президентской республики). В-третьих, каждая из подфракций
опять делилась на две фракции. И так далее `N` раз (должно
получиться `2^N` субфракций нижнего уровня). Для каждой фракции
(и всего союза), которая делится на подфракции, выполняется
следующее условие: пусть `k` и `m` – число членов в подфракциях
данной фракции, тогда `k\ >\ 0`, `m\ >\ 0`, `k\ ≠\ m`, `2*k\ >\ m`, `2*m\ >\ k`. Требуется
определить возможность разбиения союза численностью `L` на
фракции `N` раз по указанным правилам.
Во входном файле содержится несколько строк (более одной),
в каждой строке содержится два целых числа `L` (`1\ ≤\ L\ ≤\ 1\ 000\ 000`) и
`N` (`1\ ≤\ N\ ≤\ 20`) через один пробел. Строка, в которой содержится
только число 0, служит признаком завершения тестового файла.
В выходной файл для каждой строки с `L` и `N` из входного файла
вывести строку с сообщением "YES", если возможно существование
союза с численностью `L` и степенью раздробленностью `N`, и "NO", в
противном случае.
Пример ввода
2 1
3 1
5 1
1000 3
0
Пример вывода
NO
NO
YES
YES