水DP 更新的时候注意不要完全遍历之前的每个位置 TLE了一次
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[2005][2005];//n,k dp[n][k]=dp[1..i..n n%i==0][k-1]
#define mod 1000000007
int main()
{
int k,n;
scanf("%d%d",&n,&k);
for(int i=1;i<=k;++i)
{
for(int j=n;j>=1;j--)
{
if(i==1)dp[j][i]=1;
else
{
for(int k=j;k<=n;k+=j)
{
dp[k][i]+=dp[j][i-1]%mod;
dp[k][i]%=mod;
}
}
}
}
for(int i=1;i<n;i++)
{
dp[n][k]+=dp[i][k]%mod;
dp[n][k]%=mod;
}
printf("%d\n",dp[n][k]);
return 0;
}