fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cmath>
  4. const int maxn = 2001;
  5. const int oo = 1000000007;
  6. using namespace std;
  7. long long n,m,dp[maxn][maxn],u[maxn][maxn];
  8. int main()
  9. {
  10. std::ios_base::sync_with_stdio(false);
  11. //freopen("psu01.inp","r",stdin);
  12. //freopen("psu01.out","w",stdout);
  13. cin >> n >> m;
  14. for (int i=1; i<=n; i++)
  15. {
  16. dp[i][1]=1;
  17. u[i][0]=1;
  18. u[i][1]=1;
  19. }
  20. for (int i=2; i<=n; i++)
  21. for (int j=i; j<=n; j+=i)
  22. {
  23. u[j][0]++;
  24. u[j][u[j][0]]=i;
  25. }
  26. for (int i=2; i<=m; i++)
  27. for (int j=1; j<=n; j++)
  28. {
  29. dp[j][i]=0;
  30. for (int z=1; z<=u[j][0]; z++)
  31. dp[j][i]=(dp[j][i]+dp[u[j][z]][i-1])%oo;
  32. //cout << j << ' ' << i << ' ' <<dp[j][i] << "\n";
  33. }
  34. long res=0;
  35. for (int i=1; i<=n; i++)
  36. res=(res+dp[i][m])%oo;
  37. cout << res;
  38. return 0;
  39. }
  40.  
Success #stdin #stdout 0s 65984KB
stdin
3 2
stdout
5