Во-первых, в С++ нет and
, надо использовать &&
.
Во-вторых, ошибка в алгоритме. Задача - проверить, что шаги оптимальные. Для этого вам надо знать оптимальный шаг и сравнивать его с текущим. Можете сформулировать оптимальную стратегию?
Возьмите, например, k=4,5,6 и порисуйте на бумажке, попробуйте подсчитать, какие позиции выигрышные (из них можно сделать ход в проигрышную позицию), а какие - проигрышные (любой ход ведет в выигрышную позицию). Считайте увеличивая количество предметов. Позиция с 0 предментами - проигрышная - предыдущий игрок придя в нее выиграл. Позиция 1 - выигрышная, потому что можно пойти в проигрышную 0. Найдите закономерность, попытайтесь ее логически обосновать.
Пример для k=3:
0 - проигрышная
1 - выигрышная ( можно взять 1)
2 - выигрышная (можно взять 2)
3 - выигрышная (можно взять 3)
4 - проигрышная
5 - выигрышная (можно попасть в 4, взяв 1)
6 - выигрышная (можно попасть в 4, взяв 2)
7 - выигрышная (можно взять 3 и попасть в проигрышную 4)
8 - проигрышная (любой ход ведеть в выигрышные 5-7)
...