Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int N = 5010;
- const int mod = 1e9 + 7;
- int f[N], rf[N];
- int powmod(int a, int p) {
- if (p == 0) return 1;
- if (p == 1) return a;
- int k = powmod(a, p / 2);
- if (p & 1) return (k * k % mod) * a % mod;
- return k * k % mod;
- }
- int rev(int x) {
- return powmod(x, mod - 2);
- }
- int C(int n, int k) {
- int ans = f[n];
- ans = ans * rf[k] % mod;
- ans = ans * rf[n - k] % mod;
- return ans;
- }
- signed main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- f[0] = 1;
- for (int i = 1; i < N; i++) {
- f[i] = f[i - 1] * i % mod;
- }
- rf[N - 1] = rev(f[N - 1]);
- for (int i = N - 1; i > 0; i--) {
- rf[i - 1] = rf[i] * i % mod;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment