|
Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.
Странная функция
Васе дали задание — вычислить значение сложной рекурсивной функции 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. Выходные данные Выведите одно целое число — значение F(a, b, c).
Для отправки решений необходимо выполнить вход.
|