fork download
  1. #include <cstring>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <cstdlib>
  5. #include <cstdio>
  6. #include <iostream>
  7. #include <fstream>
  8. #include <queue>
  9.  
  10. #define rep(i, l, r) for(int i = l; i <= r; i++)
  11. #define down(i, l, r) for(int i = l; i >= r; i--)
  12. #define MS 1234
  13. #define MAX 1037471823
  14.  
  15. using namespace std;
  16.  
  17. int n, pp, p[MS], a, k;
  18. long long dp[MS][MS];
  19. bool b[MS];
  20.  
  21. int main()
  22. {
  23. scanf("%d", &n);
  24. rep(i, 2, n) if (!b[i])
  25. {
  26. p[++pp] = i; a = i+i;
  27. while (a <= n) b[a] = 1, a += i;
  28. }
  29. rep(i, 0, n) dp[0][i] = 1;
  30. rep(i, 1, pp) rep(j, 0, n)
  31. {
  32. dp[i][j] = dp[i-1][j];
  33. k = p[i]; while (k <= j) dp[i][j] += dp[i-1][j-k], k *= p[i];
  34. }
  35. printf("%lld\n", dp[pp][n]);
  36. }
Success #stdin #stdout 0s 15248KB
stdin
987
stdout
2546120572871