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

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

HotLog


 

Степени двойки

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

Найдите количество способов разложить число n на сумму слагаемых, являющимися степенями числа 2 (1, 2, 4, 8 и т.д.).

Способы, отличающиеся порядком слагаемых, считаются одинаковыми. Каждое число в разложении можно использовать не более k раз. Так как ответ может быть слишком большим, выведите его остаток от деления на число 109+7.

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

Входной файл INPUT.TXT содержит два целых числа n и k (1 ≤ n ≤ 1018; 1 ≤ k ≤ 500).

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

В выходной файл OUTPUT.TXT выведите остаток от деления количества способов на 109 + 7.

Примеры

INPUT.TXTOUTPUT.TXT
16 11
25 22
34 33

Примечание

6 = 2 + 4

5 = 1 + 4 = 1 + 2 + 2

4 = 1 + 1 + 2 = 2 + 2 = 4


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

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 A. Простой шифр
 B. Лягушка
 C. Электронная очередь
 D. Производная
 E. Степени двойки
 F. Сыграем?
 G. Вася и отрезки
 H. Различные префиксы
 I. Взрывчатка
 J. Перестановка
 K. Многословие
 L. Подготовка к ЕГЭ

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