Advertisement
MinhNGUYEN2k4

nCr v2

May 23rd, 2021
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. /*
  2. Sử dụng công thức truy hồi:
  3.     nCr = (n-1)Cr + (n-1)C(r-1)
  4.  
  5. ta dễ dàng khởi tạo tất cả các giá trị nCr trong O(N^2).
  6.  
  7. Code có thể chạy được với n <= 5000 và mod bất kỳ (không cần nguyên tố).
  8. */
  9. //by Tanmay Chaudhari
  10. #include <bits/stdc++.h>
  11. using namespace std;
  12.  
  13. const int MOD = 1e9 + 7;
  14. long long ncr[5005][5005];
  15.  
  16. void precompute()
  17. {
  18.     int k;
  19.     for (int i = 0; i < 5001; i++)
  20.     {
  21.         ncr[i][0] = ncr[i][i] = 1;
  22.         k = i >> 1;
  23.         for (int j = 1; j < k + 1; j++)
  24.             ncr[i][j] = ncr[i][i - j] = (ncr[i - 1][j] + ncr[i - 1][j - 1]) % MOD;
  25.     }
  26. }
  27.  
  28. int main()
  29. {
  30.     precompute();
  31.     cout << ncr[4892][231] << endl;
  32.     return 0;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement