Задача скорее учебная чем олимпиадная. Для решения достаточно лишь заметить, что проверку делимости заданного в бинарном виде числа на фиксированное число
можно осуществить на конечном автомате. Например, заведя отдельное состояние для каждого возможного остатка по модулю
, и переходя от одного состояния к другому по мере прочтения входного числа, причем единственным допускающим состоянием является остаток равный нулю.
Согласен. Но надо, наверное, для полноты решения ещё один фактик упомянуть.
Чтобы считать остатки, двоичную запись числа лучше читать с правого конца, задом наперёд. А подразумевается, вероятно, что она будет читаться автоматом слева направо. Ну и тут надо сказать, что язык регулярен тогда и только тогда, когда язык, состоящий из "перевёрнутых" слов, тоже регулярен.
Кстати, я как-то уже публиковал в этом разделе задачку про конечные автоматы.
post91785.htmlОна более олимпиадная, чем эта