Ну вот что-то такое вырисовывается, надо будет ещё проверить.
Пусть имеется

фальшивых монет. Способ работает при

. Представим количество монет в виде

, где

Отложим в сторону кучку в

монет, с остальными перейдём к начальному шагу.
Начальный шаг. Если есть кучка A, о которой известно, что в ней не более

фальшивых, делим её пополам на B и C и сравниваем.
1. =. В любой из B и C не более

фальшивых.
1.1. Если

в кучке A все монеты настоящие. Смотрим на результат сравнения с первой надкучкой выше по цепочке сравнений, где было неравенство. Если везде равенство, надо сравнивать с остатком.
1.2. Если

берём кучку B и переходим к начальному шагу.
2. <>. Разделим кучку B пополам и сравним.
2.1. =. Действуем аналогично п. 1.
2.2. <>. В кучке B есть фальшивые. Значит, в кучке C их не более, чем

(0, если

). Если

или

, результат известен. Иначе берём кучку C и переходим к начальному шагу.
Если не ошибаюсь, общее количество сравнений не превысит
