거의 알고리즘 일기장

백준 11051번 _ 이항 계수2 본문

알고리즘 문제풀이

백준 11051번 _ 이항 계수2

건우권 2020. 5. 9. 23:54

https://www.acmicpc.net/problem/11051

 

11051번: 이항 계수 2

첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\))

www.acmicpc.net

풀이방법

공식

이거 그대~로 풀고 메모제이션 사용하면 정답


전체코드

#include <iostream>

#define DIV_NUM 10007

using namespace std;
long long nCk[1001][1001];
int N, K;

void nCkInit()
{
	for (int i = 0; i <= N; i++)
		for (int j = 0; j <= K; j++)
			nCk[i][j] = -1;
}

long long nCkgogo(int n, int k)
{
	long long& ret = nCk[n][k];
	if (ret != -1) return ret;
	if (k == 0 || k == n)
		return ret =1;
	return ret = (nCkgogo(n -1, k) % DIV_NUM + nCkgogo(n - 1, k - 1) % DIV_NUM) % DIV_NUM;
}

int main()
{
	cin >> N >> K;
	nCkInit();
	cout << nCkgogo(N, K);
	return 0;
}

후기

분명히 틀린게없는데 계속 틀리길래 욕나올뻔 했는데 나누는 숫자를 10007인데 100007로 보고 잘못써서 틀린거였다.....ㅋㅋㅋㅋㅋ..  눈에 이상이 있는듯

반응형
Comments