美丽的字符串
题号:NC24558
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

奇奇获得了一个长度为 字符串s,该字符串都由 组成,也就是说,假如字符串长度 为 5,那么 为 “11111”。但是奇奇觉得这个字符串太丑了,他决定将这个字符串变得美丽,由于奇奇是个程序员,所以在奇奇的眼中,一个美丽的字符串应该由 和 组成。更正式的说,在字符串 中 和 的数量都至少有一个。但奇奇不想简单的将 变为 0,奇奇想将任意连续的 变为 0,我们约定奇奇可以将任意 个连续的 变成 0,求奇奇将字符串变得美丽的不同方案数。(两个方案定义为不同,意味着他们最后所形成的字符串不相同)由于可能有太多的方案,你只需要求出方案数模1000000007

输入描述:

第一行输入两个整数n, k (1<=n<=1*1018, 2 <= k<= 100) n为

字符串长度,长度为k的连续的1可以变为0。

输出描述:

方案数模1000000007
示例1

输入

复制
4 2

输出

复制
3

说明

0011  1001 1100 共三种
示例2

输入

复制
5 2

输出

复制
7

说明

00111  10011 11001  11100

00001 00100 10000 共七种