#CF1954F. Unique Strings

Unique Strings

Unique Strings

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

若字符串 bb 可以由字符串 aa 经过若干次循环移位得到,则称 aa 与 bb 等价。例如,0100110 与 1100100 等价,而 1010 与 1100 不等价。

给定一个长度为 nn 的二进制字符串 ss。它的前 cc 个字符均为 1,其余 n−cn-c 个字符均为 0。

一次操作可以把一个 0 改为 1。求至多进行 kk 次操作后,最多能得到多少个两两不等价的字符串。答案对 109+710^9+7 取模。

输入格式

一行三个整数 n,c,kn,c,k。

输出格式

输出一个整数,表示不同循环等价类的数量对 109+710^9+7 取模后的结果。

样例输入 1

1 1 0

样例输出 1

1

样例输入 2

3 1 2

样例输出 2

3

样例输入 3

5 1 1

样例输出 3

3

样例输入 4

6 2 2

样例输出 4

7

样例输入 5

24 3 11

样例输出 5

498062

数据范围

对于所有数据,1≤n≤30001\le n\le3000,1≤c≤n1\le c\le n,0≤k≤n−c0\le k\le n-c。

子任务编号 分值 特殊限制
1 30 n≤18n\le18
2 n≤60n\le60
3 40 无特殊限制

每个测试点独立计分。

说明

对于样例 2,可得到 100、110 和 111 三类。101 与 110 循环等价,因此不重复计数。