1719: Інтервальні тренування

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 40,00 (partial)
Time limit: 2.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
Assembly, Awk, Brain****, C, C++, Java, mono C#, Pascal, Perl, Python, Sed, Text, vb

В академії фізичної культури розробили новий метод інтервальних тренувань спортсменів. Відповідно до цього методу спортсмен повинен тренуватися щодня, проте зростання навантаження повинно постійно змінюватися його зменшенням і навпаки. План тренування являє собою набір цілих додатних чисел ~a_1, a_2,. . . , a_m~, де ~a_i~ описує навантаження спортсмена в ~i~-й день. Будь-які два сусідніх дні повинні мати різне навантаження: ~a_i \neq a_{i + 1}~. Щоб зростання навантаження і його зменшення чергувалися, для ~i~ від 1 до ~m - 2~ має виконуватися така умова: якщо ~a_i < a_{i + 1}~, то ~a_{i + 1} > a_{i + 2}~, якщо ж ~a_i > a_{i + 1}~, то ~a_{i + 1} < a_{i + 2}~.

Сумарне навантаження в процесі виконання плану повинне складати ~n~, тобто ~a_1 + a_2 +. . . + A_m = n~. Обмеження на кількість днів у плані немає, ~m~ може бути будь-яким, але навантаження в перший день тренувань зафіксоване: ~a_1 = k~. Перш ніж приступити до тестування нового методу, керівництво академії хоче з'ясувати, скільки різних планів тренувань задовольняє описаним обмеженням.

Потрібно написати програму, яка за заданими ~n~ і ~k~ визначає, скільки різних планів тренувань задовольняють описаним обмеженням, і виводить залишок від ділення кількості таких планів на числа ~10^9 + 7~.

Формат вхідних даних

У першому рядку вхідних даних знаходяться цілі числа ~n~, ~k~ (~1 \le n \le 5000~, ~1 \le k \le n~).

Формат вихідних даних

Виведіть одне число: залишок від ділення кількості планів тренувань на ~10^9 + 7~.

Примітка

У першому прикладі підходять наступні плани: [2, 1, 2, 1], [2, 1, 3], [2, 3, 1], [2, 4].

У другому прикладі єдиний план [3].

Scoring

Підзадача 1: 23 бали, ~1 \le n \le 10~;

Підзадача 1: 20 балів, ~1 \le n \le 30~,

Підзадача 1: 23 бали, ~1 \le n \le 500~,

Підзадача 1: 34 бали, ~1 \le n \le 5000~,

Приклад вхідних даних

6 2

Приклад вихідних даних

4

Приклад вхідних даних

3 3

Приклад вихідних даних

1

Коментарі

Please read the guidelines before commenting.


Ще немає коментарів.