e-olymp 1624. Послезавтра

Задача

По заданной дате требуется определить, какое число будет послезавтра.

Входные данные

Дано число, месяц и год (год — число в промежутке от 1 до 10000).

Выходные данные

Требуется вывести, какое число будет послезавтра, в формате входных данных.

Тесты

# Входные данные Выходные данные
1 1 8 2009 3 8 2009
2 30 12 2009 1 1 2010
3 28 2 2008 1 3 2008
4 29 03 2017 31 03 2017
5 20 05 2012 22 05 2012

Код программы

Решение задачи

Для начала мы просто должны к заданной дате прибавить 2 дня.
Далее необходимо определить високосный ли год.
Чтобы определить, является ли год високосным, нужно выполнить следующие действия.
1. Если год делится на 4, перейдите к шагу 2. В противном случае перейдите к шагу 5.
2. Если год делится на 100, перейдите к шагу 3. В противном случае перейдите к шагу 4.
3. Если года делится на 400, перейдите к шагу 4. В противном случае перейдите к шагу 5.
4. Год является високосным ( 366 дней ).
5. Год не является високосным ( 365 дней ).
Дальше начинаем проходиться по месяцам, в месяцах с 31 днями, если значение дня больше 31 то берём остаток от деления этого значения на 31 и добавляем к месяцу единицу, следовательно с 30 днями, остаток от деления на 30 и так же прибавляем к месяцу единицу.
Для февраля мы должны учитывать високосный ли год. Если да, то 29 дней, если нет, то 28. Проделываем тоже что и в прошлый раз, только с остатком 29 или 28, в зависимости от года.
Для декабря, так как это последний месяц, если значение даты выходит больше 31, мы должны взять остаток от деления даты на 31, сбросить значение месяца до 1 и прибавить к значению года единицу

Ссылки

Задача на сайте e-olymp

Код решения ideone

Ю2.29

Условие

Для заданного [latex]0 \le n \le 200[/latex], рассматриваемого как возраст человека, вывести фразу вида: «Мне 21 год», «Мне 32 года», «Мне 12 лет».

Тестирование

Входные данные Выходные данные
1 0 Мне 0 лет
2 1 Мне 1 год
3 14 Мне 14 лет
4 24 Мне 24 года
5 111 Мне 111 лет
6 151 Мне 151 год
7 200 Мне 200 лет

Код

Решение

Основная задача состоит в том, чтобы определить, какую форму слова «год» из трех существующих («год», «года», «лет») нужно вывести в конце предложения. Для этого обратимся к правилам его употребления:

В первой сотне лет:

  • в первом десятке лет, до 5 лет употребляется слово «год»: 1 год, 2 года, 3 года, 4 года, а от 5 лет до 10 лет употребляется слово «лет»: 5 лет, …, 10 лет;
  • во втором десятке лет употребляется слово «лет»: 11 лет, 12 лет, …, 20 лет;
  • от третьего до 9-го десятка лет, в первых четырёх годах десятка употребляется слово «год»: 21 год, 22 года, 23 года, 24 года, а в остальных годах десятка употребляется слово «лет»: 25 лет, …, 29 лет, 30 лет.

В следующих сотнях лет повторяется порядок первой сотни лет.

Таким образом, форма слова зависит от того, на какие две цифры заканчивается возраст. Составим алгоритм из двух проверок:

  1. Если число заканчивается на [latex]0[/latex] или цифру, превышающую [latex]4[/latex], или если вторая с конца цифра этого числа — [latex]1[/latex], то выводим слово «лет» и завершаем программу; иначе переходим ко второй проверке.
  2. Если последняя цифра числа превышает [latex]1[/latex] (то есть является одной из следующих: [latex]2[/latex], [latex]3[/latex], [latex]4[/latex]), то выводим слово «года»; иначе выводим слово «год».

Наконец, реализуем вышеописанный алгоритм в виде двух вложенных одна в другую тернарных операций:

Ссылки

Код программы на Ideone.com;

Правила употребления слова «год».