티스토리 뷰

문제 링크

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

 

2225번: 합분해

첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

 

k가 1인 경우는 n에 상관없이 1가지의 방법밖에 존재하지 않습니다.

n이 1일 때 k가 1이면 1, 2이면 2 ... 식의 방법이 존재합니다.

 

나머지 n에 대한 방법의 수는 아래의 그림처럼 나타낼 수 있습니다.

 

 

그림의 수들에서 규칙을 찾아낼 수 있는데 n과 k는 (n-1, k)일 때의 방법과 (n, k-1)일 때의 방법의 합으로 구할 수 있습니다.

 

구현 코드

 

#include <iostream>
using namespace std;
int d[201][201];
int main(){
int n, k;
cin >> n >> k;
for (int i=0;i<=k;i++)
d[1][i] = i;
for (int i=2;i<=n;i++)
for (int j=1;j<=k;j++)
d[i][j] = (d[i-1][j] + d[i][j-1]) % 1000000000;
cout << d[n][k] << endl;
return 0;
}
view raw 2225.cpp hosted with ❤ by GitHub