치춘짱베리굿나이스
[백준] 11051 본문
이항 계수 2
문제
자연수 N과 정수 K가 주어졌을 때 이항 계수
를 10,007로 나눈 나머지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ K ≤ N)
출력
를 10,007로 나눈 나머지를 출력한다.
풀이
#include <iostream>
int dp[1001][1001];
int main(void) {
int n, k;
std::cin >> n >> k;
dp[0][0] = 1;
dp[1][0] = 1;
dp[1][1] = 1;
for (int i = 2; i <= n; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) dp[i][j] = 1;
dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]) % 10007;
}
}
std::cout << dp[n][k];
}
반성회
팩토리얼 곱셈으로 풀면 나머지 (%10007) 연산을 할 때마다 값이 잘못 나와서 틀리게 된다
dp 배열로 위와 같은 삼각형을 만들어서 dp[n][k]
의 값을 구해야 풀 수 있는 문제
'C C++ > 알고리즘풀이' 카테고리의 다른 글
[백준] 9375 (0) | 2023.08.19 |
---|---|
[백준] 11052 (0) | 2023.08.19 |
[백준] 17212 (0) | 2023.08.16 |
[백준] 13301 (0) | 2023.08.15 |
[백준] 2828 (0) | 2023.08.13 |
Comments