子序列归来
题目描述
记 sk(n) 为非负整数 n 在 k 进制下的各位数字之和。例如,s2(5)=s2(1012)=2,s3(14)=s3(1123)=4。
定义长度为 n 的序列
aj=sk(j)modk(0≤j<n)。
求序列 a0,a1,…,an−1 有多少个不同的子序列。空序列也算一个子序列。答案对 109+7 取模。
输入格式
一行两个整数 n,k。
输出格式
输出不同子序列的数量对 109+7 取模后的结果。
样例输入 1
4 2
样例输出 1
11
样例输入 2
7 7
样例输出 2
128
数据范围
1≤n≤1018,2≤k≤30。
| 子任务编号 |
分值 |
特殊限制 |
| 1 |
20 |
n≤2×105 |
| 2 |
40 |
k≤8 |
| 3 |
无特殊限制 |
说明
第一个样例对应序列 (0,1,1,0),共有 11 个不同子序列。第二个样例中各项互不相同,因此所有 27 种选取方式都得到不同序列。