ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Сборники > Сборник > задача:


Странная функция

Задачи сборника

• Среднее геометрическое
• Средняя скорость
• Станция
• Степень — 1
• Степень — 2
• Степень тройки
• Стипендия
• Сто тысяч
• Странная функция
• Странности в метеосводке
• Странные вычисления
• Сумма вводимых чисел
• Сумма вводимых чисел 2
• Сумма вводимых чисел: До нуля
• Сумма вещественных
• Сумма максимального и минимального
• Сумма минимального и максималь...

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Странная функция
Странная функция
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Васе дали задание — вычислить значение сложной рекурсивной функции F, принимающей три аргумента a, b и c.

Функция F определена следующим образом (запись X % M означает взятие остатка от деления X на M):

  • Если a ≤ 0 или b ≤ 0 или c ≤ 0, то F(a, b, c) = 1;
  • Если a > 30, то F(a, b, c) = F(30, b, c);
  • Если b > 30, то F(a, b, c) = F(a, 30, c);
  • Если c > 30, то F(a, b, c) = F(a, b, 30);
  • Если a > b и a > c, то F(a, b, c) = (F(a - 2, b, c) + F(a - 1, b - 1, c) + F(a - 1, b, c - 1)) % M;
  • Если b > a и b > c, то F(a, b, c) = (F(a, b - 2, c) + F(a, b - 1, c) + F(a, b - 1, c - 1)) % M;
  • Если c > a и c > b, то F(a, b, c) = (F(a, b, c - 3) + F(a - 1, b, c - 1) + F(a, b - 1, c - 1)) % M;
  • Во всех остальных случаях F(a, b, c) = (F(a - 1, b, c) + F(a, b - 1, c) + F(a, b, c - 1)) % M;

Вася расстраивается, потому что его программа выдаёт ответ только через несколько часов, и сетует на медленный компьютер.

Попробуйте помочь ему определить величину F для заданных a, b и c.

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

Ввод содержит целые числа a, b, c, M (0 ≤ a, b, c ≤ 104, 2 ≤ M ≤ 100).

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

Выведите одно целое число — значение F(a, b, c).

Примеры

Входные данные
3 2 3 100
Выходные данные
55
Входные данные
5 5 5 97
Выходные данные
28
Для отправки решений необходимо выполнить вход.

www.contester.ru