у меня есть мысля, но её в телеграмме в текстовом виде очень сложно пояснить (особенно с учётом того, что она не факт что правильная)
Можно построить бинарное дерево делением бутылок на группы по 512 штук, потом каждую по 256, потом 128 и т.п. Должно как раз получиться log2(1024)=10 уровней.
Каждому уровню присваивается свой кролик. Кролик пьёт из смеси содержимого бутылок каждого второго узла своего уровня. На следующий день смотрим, кролики каких уровней поумирали и на основе этого делаем вывод о пути в дереве. Т.е. если кролик 1го уровня умер, яд - в том узле из которого он пил; иначе - в другом. Смотрим, что случилось с кроликом 2-го уровня. Он пил из 256 бутылок первой 512- подгруппы и из 256 бутылок второй. На основе комбинаций первый выжил-второй выжил, первый да- второй нет, первый нет-второй да, первый нет-второй нет можно сделать вывод о том, в каком из 256-узлов яд. Потом берём третьего кролика и при помощи него определяем 64-подгруппу. И т.д. до самого нижнего уровня.
Вроде похоже на правду, есть здравое зерно?