Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Функция - 2

(Время: 1 сек. Память: 16 Мб Сложность: 38%)

Описана рекурсивная функция с тремя параметрами F(a, b, c):

  • если a ≤ 0 или b ≤ 0 или c ≤ 0, то F(a, b, c) = 1
  • если a > 20 или b > 20 или c > 20, то F(a, b, c) = F(20, 20, 20)
  • если a < b и b < c, то F(a, b, c) = F(a, b, c-1) + F(a, b-1, c-1) - F(a, b-1, c)
  • иначе F(a, b, c) = F(a-1, b, c) + F(a-1, b-1, c) + F(a-1, b, c-1) - F(a-1, b-1, c-1)

Однако, если указанную функцию реализовать напрямую, то даже для небольших значений a, b и c (например, a = 15, b = 15, c = 15), программа будет работать несколько часов! Необходимо реализовать эффективный алгоритм вычисления функции F, который успеет найти любое ее значение менее чем за одну секунду!

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

Входной файл INPUT.TXT содержит три целых числа a, b, c - параметры функции F (-104 ≤ a,b,c ≤ 104).

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

В выходной файл OUTPUT.TXT выведите значение функции F(a, b, c).

Примеры

INPUT.TXTOUTPUT.TXT
11 1 12
22 2 24
310 4 6523
450 50 501048576

Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

[Обсуждение] [Все попытки] [Лучшие попытки]


Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru



какие виды блескости существуют