Algorithm (알고리즘)
Algorithm - Fermat's little theorem(페르마의 소정리)
강태종
2020. 10. 8. 12:54
개념
If is prime and is an integer not divisible by , then
문제
16134 조합
16134번: 조합 (Combination)
\(\begin{pmatrix}N\\R\end{pmatrix}\)의 값을 1,000,000,007로 나눈 나머지를 출력하자! (단, 1,000,000,007은 소수이다)
www.acmicpc.net
코드
#include <bits/stdc++.h>
using namespace std;
constexpr long long MOD = 1000000007;
long long pow(long long x, long long y) {
long long result = 1L;
while (y) {
if (y & 1) {
result *= x;
result %= MOD;
}
x *= x;
x %= MOD;
y /= 2L;
}
return result;
}
long long permutation(long long n) {
long long result = 1L;
for (long long i = 1L;i <= n;++i) {
result *= i;
result %= MOD;
}
return result;
}
long long combination(long long n, long long r) {
return permutation(n) * pow(permutation(n - r), MOD - 2) % MOD * pow(permutation(r), MOD - 2) % MOD;
}
int main() {
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
long long n, r;
cin >> n >> r;
cout << combination(n, r) << "\n";
}