Яна_Софья
?>

На си игра \"даты\ играют двое. задаётся какая-то дата 2020 года. каждый игрок на своём ходе называет более позднюю дату, увеличивая на 1 или 2 либо день в месяце, либо месяц, но не то и другое сразу. при этом сочетание дня и месяца должно оставаться датой. игрок, назвавший 31 декабря, проигрывает. оба играют наилучшим образом. исходя из заданной даты вывести, кто выиграет.входные данныев первой строке находятся числа, обозначающие день и месяц.выходные данныевывести 1, если выигрывает первый (начинающий) игрок, или 2 - в противном случае.

Информатика

Ответы

kondrashovalf6404
Добрый день! Я рад стать вашим учебным учителем и помочь вам разобраться в этой задаче.

В данной игре два игрока ходят поочередно и называют более позднюю дату, увеличивая на 1 или 2 либо день в месяце, либо месяц. Однако, сочетание дня и месяца должно оставаться датой, а игрок, назвавший 31 декабря, проигрывает. Оба играют наилучшим образом, и нам нужно определить, кто из игроков выиграет, исходя из заданной даты.

Для начала, давайте разберемся с правилами игры. В условии сказано, что игроки могут увеличивать либо день, либо месяц, но не то и другое сразу. Поэтому у нас есть два возможных варианта хода:
1) Увеличение дня на 1 или 2.
2) Увеличение месяца на 1 или 2.

Теперь давайте рассмотрим стратегию победы в этой игре. Для начала, определим, что будет происходить на каждом ходе.
1) Если текущая дата - 31 декабря, то игрок, сейчас делающий ход, проигрывает, так как он не сможет сделать следующего хода.
2) Если текущий месяц содержит 30 дней, то следующий ход должен быть сделан в следующем месяце.
3) Если текущий месяц содержит 31 день, и играющий сейчас игрок может увеличить месяц на 2, то он выигрывает, так как пропустит 31 декабря и сделает ход в январе следующего года.
4) В остальных случаях следующий ход должен быть сделан в следующем дне текущего месяца.

Исходя из этих правил, мы можем сделать следующий алгоритм решения задачи:
1) Считываем входные данные - числа, обозначающие день и месяц.
2) Проверяем, является ли текущая дата 31 декабря. Если да, выводим 2 (второй игрок выигрывает) и завершаем программу.
3) Проверяем, является ли текущий месяц месяцем с 30 днями. Если да, переходим к следующему шагу. Если нет, переходим к шагу 5.
4) Переходим к следующему месяцу и делаем ход в первый день этого месяца. Если новый месяц - январь следующего года, выводим 1 (первый игрок выигрывает) и завершаем программу.
5) Переходим к следующему дню в текущем месяце и делаем ход. Возвращаемся к шагу 2.

Теперь, давайте составим программу на языке программирования Python в соответствии с предложенным алгоритмом:

```python
day, month = map(int, input().split())

if day == 31 and month == 12:
print(2)
else:
if day == 31 or (day == 30 and month != 1 and month != 3 and month != 5 and month != 7 and month != 8 and month != 10 and month != 12):
month += 1
day = 1
if month == 13:
month = 1
print(1)
else:
print(2)
else:
day += 1
if day == 31 and month == 12:
print(2)
else:
print(1)
```
Вот так будет выглядеть решение этой задачи. Пожалуйста, дайте знать, если у вас есть какие-либо вопросы или нужна дополнительная помощь!

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

На си игра \"даты\ играют двое. задаётся какая-то дата 2020 года. каждый игрок на своём ходе называет более позднюю дату, увеличивая на 1 или 2 либо день в месяце, либо месяц, но не то и другое сразу. при этом сочетание дня и месяца должно оставаться датой. игрок, назвавший 31 декабря, проигрывает. оба играют наилучшим образом. исходя из заданной даты вывести, кто выиграет.входные данныев первой строке находятся числа, обозначающие день и месяц.выходные данныевывести 1, если выигрывает первый (начинающий) игрок, или 2 - в противном случае.
Ваше имя (никнейм)*
Email*
Комментарий*