소스
////////////////////////////////////////////////////////////
#include <stdio.h>
#include <string.h>
#define MOD 10000000
int n;
int cache[101][101];
int poly(int ,int);
int main(){
int c;
int i = 0;
scanf("%d", &c);
while(c-- > 0){
memset(cache, -1, sizeof(cache));
scanf("%d",&n);
int start = 0;
int ans = 0;
for(i = 1; i< n; i++){
ans = ans + poly(n, i);
ans %= MOD;
}
printf("%d\n", ans+1);
}
return 0;
}
int poly(int n, int first){
if(n == first) return 1;
int ret = cache[n][first];
int second = 0;
if(ret != -1) return ret;
ret = 0;
for(second = 1; second <= n - first; second++){
int add = second + first -1;
int sum = poly(n-first, second);
int temp = n - first;
cache[temp][second] = sum;
add = add * sum;
add %= MOD;
ret += add;
ret %= MOD;
}
return ret;
}
'공부 > C & C++' 카테고리의 다른 글
(함수) 메모리 값 바꾸기, 초기화 [memset] (0) | 2016.04.14 |
---|---|
(함수) 문자열 분리 (strtok) (0) | 2016.04.12 |
(에러) 'strcpy': This function or variable may be unsafe. (0) | 2016.04.01 |
(c언어) 콘솔창 멈추기 system("pause") (0) | 2016.01.08 |
(알고리즘) 알고스팟 ZeroOne (0) | 2016.01.06 |