Happy Sequence (151 - ZOJ Monthly, March 2018 - H)
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5719
Sample Input
1
3 2
Sample Output
5
Hint
In the sample test case, the happy sequences are: , , , , .
Code
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 2000 + 10;
const int mod = 1000000000 + 7;
int dp[maxn][maxn];
int main(){
for(int i = 1;i <= 2000;i ++){
dp[1][i] = 1;
}
for(int i = 1;i <= 2000;i ++){
for(int j = 1;j <= 2000;j ++){
if(dp[i][j]){
for(int k = 1;k <= 2000 / j;k ++){
dp[i + 1][k * j] += dp[i][j];
dp[i + 1][k * j] %= mod;
}
}
}
}
int t;
scanf("%d",&t);
while(t --){
int n,m;
scanf("%d%d",&n,&m);
int sum = 0;
for(int i = 1;i <= n;i ++){
sum += dp[m][i];
sum %= mod;
}
printf("%d\n",sum);
}
return 0;
}