DuongNhi99

D - Race (24-11)

Dec 10th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 1000;
  5. const int MOD = 10056;
  6.  
  7. int n;
  8. int nCr[N + 5][N + 5], dp[N + 5];
  9.  
  10. void nCR() {
  11.     for (int i = 1; i <= N; ++i) {
  12.         nCr[i][0] = nCr[0][i] = 0;
  13.         nCr[i][1] = i;
  14.         nCr[i][i] = 1;
  15.     }
  16.  
  17.     for (int i = 1; i <= N; ++i)
  18.         for (int j = 2; j <= N; ++j)
  19.             if (i != j)
  20.                 nCr[i][j] = (nCr[i - 1][j - 1] + nCr[i - 1][j]) % MOD;
  21. }
  22.  
  23. int solve(int n) {
  24.     if(n <= 1) return 1;
  25.  
  26.     if(dp[n] != -1) return dp[n];
  27.  
  28.     int ans = 0;
  29.     for (int i = 1; i <= n; ++i) {
  30.         int tmp = (nCr[n][i] * solve(n - i)) % MOD;
  31.         ans = (ans + tmp) % MOD;
  32.     }
  33.  
  34.     return dp[n] = ans;
  35. }
  36.  
  37. int main() {
  38.     //freopen("D-Race.inp", "r", stdin);
  39.     //freopen("D-Race.out", "w", stdout);
  40.     //ios_base::sync_with_stdio(false);
  41.     //cin.tie(NULL); cout.tie(NULL);
  42.  
  43.     nCR();
  44.     memset(dp, -1, sizeof(dp));
  45.  
  46.     int t; cin >> t;
  47.     for(int test = 1; test <= t; ++test) {
  48.         cin >> n;
  49.         cout << "Case " << test << ": " << solve(n) << '\n';
  50.     }
  51.     return 0;
  52. }
  53. //dp(n) = dp(n-1) * (ToHop chap i cua n)    trong do i = 1, 2,..., n
  54.  
Advertisement
Add Comment
Please, Sign In to add comment