문제 링크
- http://icpc.me/11401
사용 알고리즘
- Mudulo Inverse
풀이
(a + b) % mod = (a % mod) + (b % mod)
(a - b) % mod = (a % mod) - (b % mod)
(a × b) % mod = (a % mod) × (b % mod)
위 3가지 모두 성립하지만, 나눗셈에 대해서는 성립하지 않습니다.
나눗셈은 역수를 곱하는 것으로 치환할 수 있듯이 모듈러 연산의 곱셈 역원을 곱하는 것으로 대체할 수 있습니다.
이 문제에서 mod는 1e9+7, 즉 소수입니다.
정수 a와 소수 p가 있을 때, 법 p에서 ap와 a는 합동입니다.
즉, ap ≡ a (mod p)입니다.
또한, ap-1 ≡ 1 (mod p)입니다.
따라서 ap-1 = a × ap-2 ≡ 1 (mod p)입니다.
ap-2가 a × t ≡ 1 (mod p)를 만족하는 t이므로, 역원은 ap-2입니다.
팩토리얼을 이용한 nCr 공식을 이용해 적당히 구해주면 됩니다.
전체 코드
1 |
|