一个长为k的序列b1, b2, ..., bk (1 ≤ b1 ≤ b2 ≤ ... ≤ bk ≤ n),如果对所有的 i (1 ≤ i ≤ k - 1),满足bi | bi+1,那么它就是好的序列。这里a | b表示a是b的因子,或者说a能整除b。
给出n和k,求长度为k的好的序列有多少个。
输入格式
一行,两个整数n,k。1 ≤ n,k ≤ 2000
输出格式
你的答案除以1 000 000 007的余数。
输入/输出例子1
输入:
3 2
输出:
5
样例说明
[1, 1], [2, 2], [3, 3], [1, 2], [1, 3]。
样例解释
无
代码:
#include<cstdio>
#include<iostream>
#define rr register
using namespace std;
int cwh=1000000007,n,k,f[2005][2005],ans;//用cwh表示1000000007更方便。
int main()
{scanf("%d%d",&n,&k);for(rr int i=1;i<=n;i++)f[1][i]=1;//赋值for(rr int i=1;i<=k;i++)//长度for(rr int j=n;j>0;j--)for(rr int k=1;k<=n/j;k++)//倍数f[i][j*k]=(f[i][j*k]+f[i-1][j])%cwh;//方程for(rr int i=1;i<=n;i++)ans=(ans+f[k][i])%cwh;//求答案printf("%d",ans);return 0;
}