Два игрока играют в следующую игру. перед ними лежат две кучки камней, в первой из которых 3, а во второй – 2 камня. у каждого игрока неограниченно много камней. игроки ходят по очереди. ход состоит в том, что игрок или увеличивает в 3 раза число камней в какой-то куче, или добавляет 1 камень в какую-то кучу. выигрывает игрок, после хода которого общее число камней в двух кучах становится не менее 16 камней. кто выигрывает при безошибочной игре – игрок, делающий первый ход, или игрок, делающий второй ход? каким должен быть первый ход выигрывающего игрока? ответ обоснуйте.
полтос за решение
ответ:
после выполнения шага 1 на столе лежит яблоко, которое достали из корзины первым, а вторая корзина пуста. после каждого выполнения шага 2 большее яблоко перемещается в корзину, а меньшее остается на столе. в результате на столе окажется самое маленькое яблоко.
при обосновании корректности циклических алгоритмов полезно использовать понятие инварианта цикла. в случае алгоритма инвариантом цикла является такое условие «лежащее на столе яблоко — самое маленькое из всех взятых до сих пор». в начале алгоритма условие очевидно выполняется (любое яблоко удовлетворяет этому условию). условие остается истинным на каждом шаге в соответствии с правилами. таким образом, в конце алгоритма, когда все яблоки взяты, получим самое маленькое яблоко из всех.
подробнее - на -
объяснение: