Advertisement
tien_noob

partition2 - LQDOJ

Mar 31st, 2021 (edited)
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. // Comeback cực mạnh
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. const int N = 1e5, mod = 1e9 + 7;
  5. int n, dp[350][N+1];
  6. void read()
  7. {
  8.     cin >> n;
  9.     dp[0][0] = 1;
  10. }
  11. /* dp i j : số nghiệm a1 + a2 + ... + ai == j
  12. TH1 : ai = 1
  13. số nghiệm : dp i - 1 j - 2 * i + 1
  14. TH2 : ai = 2
  15. số nghiệm : dp i j - i */
  16. void solve()
  17. {
  18.     for (int i = 1; i * i <= n; ++ i)
  19.     {
  20.         for (int j = 1; j <= n; ++ j)
  21.         {
  22.             if (j >= i)
  23.             {
  24.                 dp[i][j] += dp[i][j - i];
  25.             }
  26.             if (j >= 2 * i - 1)
  27.             {
  28.                 dp[i][j] += dp[i - 1][j - 2 * i + 1];
  29.             }
  30.             dp[i][j] = dp[i][j] % mod;
  31.         }
  32.     }
  33.     int sum = 0;
  34.     for (int i = 1; i * i <= n; ++ i)
  35.     {
  36.         sum += dp[i][n];
  37.         sum = sum % mod;
  38.     }
  39.     cout << sum;
  40. }
  41. int main()
  42. {
  43.     ios_base::sync_with_stdio(false);
  44.     cin.tie(nullptr);
  45.     read();
  46.     solve();
  47. }
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement