题意:相当于k行n列的矩阵中能从第一行走到最后一行的路径数之和。long long 放外面。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define mod 1000000007
long long dp[2550][2550];
long long ans;
int main()
{
int n,m,i,j,k;
scanf("%d%d",&n,&m);
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++) dp[1][i]=1;
for(i=2;i<=m;i++)
{
for(j=1;j<=n;j++)
{
for(k=j;k<=n;k+=j)
{
dp[i][k]+=dp[i-1][j];
dp[i][k]%=mod;
}
}
}
for(i=1;i<=n;i++)
ans+=dp[m][i];ans%=mod;
printf("%lld\n",ans);
}