step 1
더보기
페르마 소정리에 의하면 $p$가 소수일 때 $a^{p-2} = a^{-1}$입니다. 즉, $x/y \pmod{p} = x*(y^{-1})\pmod{p} = x*(y^{p-2})\pmod{p}$ 입니다.
step 2
더보기
${n \choose k} = \frac{n*(n-1)*...*(n-k+1)}{1*2*...*m}$ 입니다. 분모와 분자를 각각 계산한 다음 모듈러를 취해주면 됩니다.
코드
더보기
#include<stdio.h>
long long int pow(long long int x, long long int y) {
if (y == 1) return x;
if (y == 0) return 1;
long long int p = pow(x, y / 2);
if (y % 2 == 1) return p * p % 1000000007 * x % 1000000007;
else return p * p % 1000000007;
}
int main() {
long long int n, m, i, cnt = 1, ch = 1;
scanf("%lld %lld", &n, &m);
for (i = 1; i <= m; i++) {
cnt *= (n-i+1);
cnt %= 1000000007;
}
for (i = 1; i <= m; i++) {
ch *= i;
ch %= 1000000007;
}
cnt *= pow(ch, 1000000005);
cnt %= 1000000007;
printf("%lld", cnt);
return 0;
}
'PS - 알고리즘' 카테고리의 다른 글
30294 - Flea (1) | 2024.07.05 |
---|---|
14679 - 영우와 ‘갓4’ (0) | 2024.07.05 |
6612 - 개미의 이동 (0) | 2024.06.27 |
11868 - 님 게임 2 (0) | 2024.06.26 |
24231 - 해석 (0) | 2024.06.26 |