Untitled
unknown
c_cpp
3 years ago
776 B
7
Indexable
#include <iostream> using namespace std; long long p = 1000000007; long long factorial(long long n) { long long res = 1; while (n > 1) { res = (res * ((n/p) % 2 ? p-1 : 1)) % p; for (long long i=2; i<=n%p; ++i) res = (res * i) % p; n /= p; } return res % p; } long long xGCD(long long a, long long b, long long &x, long long &y) { if(b == 0) { x = 1; y = 0; return a; } long long x1, y1, gcd = xGCD(b, a % b, x1, y1); x = y1; y = x1 - (a / b) * y1; return gcd; } int main() { long long n,k; cin >> n >> k; long long n_fact = factorial(n); long long x,y; long long denominator = factorial(k)*factorial(n - k); xGCD(denominator, p, x, y); if (x < 0) { x = x + p; } cout << (n_fact * x)%p << endl; }
Editor is loading...