728x90
url : https://www.acmicpc.net/problem/11401
내일 좀 더 자세하게 정리할 예정... 수학적 지식 +1
코드
#include <iostream>
using namespace std;
const int MOD = 1000000007;
// 빠른 거듭제곱 함수
long long pow(long long base, int exponent) {
long long result = 1;
while (exponent > 0) {
if (exponent % 2 == 1)
result = (result * base) % MOD;
base = (base * base) % MOD;
exponent /= 2;
}
return result;
}
// 모듈로 역원 계산 함수
long long modInverse(long long a) {
return pow(a, MOD - 2);
}
// 팩토리얼 계산 함수
long long factorial(int n) {
long long result = 1;
for (int i = 2; i <= n; i++) {
result = (result * i) % MOD;
}
return result;
}
int main() {
int N, K;
cin >> N >> K;
// N!, K!, (N-K)! 계산
long long factN = factorial(N);
long long factK = factorial(K);
long long factNK = factorial(N - K);
// 결과 계산
long long result = factN * modInverse(factK) % MOD * modInverse(factNK) % MOD;
cout << result << endl;
return 0;
}
728x90
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
[백준] 15654: N과 M(5) (0) | 2024.01.02 |
---|---|
[프로그래머스] 181187: 두 원 사이의 정수 쌍 (2) | 2024.01.02 |
[백준] 11501 : 이항 계수 2 (0) | 2023.12.30 |
[백준] 11050 : 이항 계수 1 (2) | 2023.12.29 |
[백준] 1655 : 가운데를 말해요, 정렬(우선순위 큐) (2) | 2023.12.28 |