---
# System prepended metadata

title: '19'

---

# 19

```python=
def is_winning_position(heap1, heap2, turn):
    if heap1 + heap2 <= 18: # Если игра окончена
        if turn == 3: # И это следующий ход после хода Вани
            return True # то победа
        else:
            return False # иначе непобеда

    if turn > 2: # Если игра длится дольше двух ходов - проигрыш
        return False
    
    turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
    turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
    turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
    turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
    
    # any([True, False, False]) == True
    # all([True, True, True]) == True
    if turn % 2 == 0:
        if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
            return True
        else:
            return False
    else:
        if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
            return True
        else:
            return False


for M in range(10, 100):
    if is_winning_position(M, M, 1):
        print(M)
```

![](https://i.imgur.com/XEr7vZG.png)
Ответ: 13

# 20

```python=
def is_winning_position(heap1, heap2, turn):
    if heap1 + heap2 <= 18: # Если игра окончена
        if turn == 4: # И это следующий ход после хода Пети
            return True # то победа
        else:
            return False # иначе непобеда

    if turn > 3: # Если игра длится дольше двух трёх ходов - проигрыш
        return False
    
    turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
    turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
    turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
    turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
    
    # any([True, False, False]) == True
    # all([True, True, True]) == True
    if turn % 2 == 1:
        if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
            return True
        else:
            return False
    else:
        if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
            return True
        else:
            return False


for S in range(6, 100):
    if is_winning_position(13, S, 1):
        print(S)
```
![](https://i.imgur.com/MLHmJbI.png)

Ответ: 14 27

## 21

```python=

# П -(1)-> В
# В -(2)-> П
# П -(3)-> В
# В -(4)-> П
# П -(5)-> В -

def is_winning_position(heap1, heap2, turn):
    if heap1 + heap2 <= 18: # Если игра окончена
        if turn == 3 or turn == 5: # И это следующий ход после хода Вани
            return True # то победа
        else:
            return False # иначе непобеда

    if turn > 4: # Если игра длится дольше четырёх ходов - проигрыш
        return False
    
    turn1 = is_winning_position(heap1 - 1, heap2, turn + 1)
    turn2 = is_winning_position(heap1, heap2 - 1, turn + 1)
    turn3 = is_winning_position(heap1 // 2, heap2, turn + 1)
    turn4 = is_winning_position(heap1, heap2 // 2, turn + 1)
    
    # any([True, False, False]) == True
    # all([True, True, True]) == True
    if turn % 2 == 0:
        if any([turn1, turn2, turn3, turn4]): # Если ход Вани - то нам нужен хотя бы один выйгрышный ход
            return True
        else:
            return False
    else:
        if all([turn1, turn2, turn3, turn4]): # Если ход Пети - то нам нужно чтобы как бы он ни сходил, Ваня побеждал всегда
            return True
        else:
            return False


for N in range(10, 100):
    if is_winning_position(N, N, 1):
        print(N)
```
![](https://i.imgur.com/ZdBYH23.png)


Ответ: 14
```
⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠤⠖⠚⢉⣩⣭⡭⠛⠓⠲⠦⣄⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢀⡴⠋⠁⠀⠀⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠳⢦⡀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⡴⠃⢀⡴⢳⠀⠀⠀⠀⠀⢣⠀⠀⢣⠀⠀⠀⠀⠀⠀ ⠙⣆⠀⠀⠀
⠀⠀⠀⠀⡾⠁⣠⠋⠀⠈⢧⠀⠀⠀⠀⠀⢣⠀⠀⢣⠀⠀⠀⠀⠀⠀  ⠈⢧⠀⠀
⠀⠀⠀⣸⠁⢰⠃⠀⠀⠀⠈⢣⡀⠀⠀⠀⠀⢣⢀⢀⢣⠀⠀⠀⠀⠀⠀  ⠈⣇⠀
⠀⠀⠀⡇⠀⡾⡀⠀⠀⠀⠀⣀⣹⣆⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀    ⢹⠀
⠀⠀⢸⠃⢀⣇⡈⠀⠀⠀⠀⠀⠀⢀⡑⢄⡀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀   ⢸⡇
⠀⠀⢸⠀⢻⡟⡻⢶⡆⠀⠀⠀⠀⡼⠟⡳⢿⣦⡑⢄⠀⠀⠀⠀⠀⠀⠀⠀  ⢸⡇
⠀⠀⣸⠀⢸⠃⡇⢀⠇⠀⠀⠀⠀⠀⡼⠀⠀⠈⣿⡗⠂⠀⠀⠀⠀⠀⠀⠀ ⢸⠁
⠀⠀⡏⠀⣼⠀⢳⠊⠀⠀⠀⠀⠀⠀⠱⣀⣀⠔⣸⠁⠀⠀⠀⠀⠀⠀⢠⡟⠀
⠀⠀⡇⢀⡇⠀⠀⠀⠀/⠀⠀⠀⠀⠀⠀⠀⠠⠀⡇⠀⠀⠀⠀⠀⠀⠀⢸⠃⠀
⠀⢸⠃⠘⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠁⠀⠀⢀⠀⠀⠀⠀⠀⣾⠀⠀
⠀⣸⠀⠀⠹⡄⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⡞⠀⠀⠀⠸⠀⠀⠀⠀⠀⡇⠀⠀
⠀⡏⠀⠀⠀⠙⣆⠀⠀⠀⠀⠀⠀⠀⢀3⣠⢶⡇⠀⠀⢰⡀⠀⠀⠀⠀⠀⡇⠀⠀
⢰⠇⡄⠀⠀⠀⡿⢣⣀⣀⣀⡤⠴⡞⠉⠀⢸⠀⠀⠀⣿⡇⠀⠀⠀⠀⠀⣧⠀⠀
⣸⠀⡇⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⢹⠀⠀⢸⠀⠀⢀⣿⠇⠀⠀⠀⠁⠀⢸⠀⠀
⣿⠀⡇⠀⠀⠀⠀⠀⢀⡤⠤⠶⠶⠾⠤⠄⢸⠀⡀⠸⣿⣀⠀⠀⠀⠀⠀⠈⣇⠀
⡇⠀⡇⠀⠀⡀⠀⡴⠋⠀⠀⠀⠀⠀⠀⠀⠸⡌⣵⡀⢳⡇⠀⠀⠀⠀⠀⠀⢹⡀
⡇⠀⠇⠀⠀⡇⡸⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠮⢧⣀⣻⢂⠀⠀⠀⠀⠀⠀⢧
⣇⠀⢠⠀⠀⢳⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡎⣆⠀⠀⠀⠀⠀⠘
⢻⠀⠈⠰⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⠘⢮⣧⡀⠀⠀⠀⠀
⠸⡆⠀⠀⠇⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠆⠀⠀⠀⠀⠀⠀⠀⠙⠳⣄⡀⢢⡀
```
