杨辉三角求组合数用来取余数,利用递推公式或者其他带有除号的式子存在问题,具体问题未解决!
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int zuhe[1010][1010];
void init(){
zuhe[1][0] = zuhe[1][1] = 1;
for(int i = 2;i<=1000;i++){
for(int j = 1;j<i;j++){
zuhe[i][j] = (zuhe[i-1][j-1] + zuhe[i-1][j])%10056;
}
zuhe[i][0] = zuhe[i][i] = 1;
}
}
int main(){
init();
int f[1010];
memset(f,0,sizeof(f));
f[0] = f[1] = 1;
f[2] = 3;
f[3] = 13;
for(int i = 4;i<=1000;i++){
for(int j = 1;j<=i;j++){
f[i] += (zuhe[i][j] * f[i-j])%10056;
}
f[i]%=10056;
}
int t;
scanf("%d",&t);
int cases = 1;
while(t --){
int n;
scanf("%d",&n);
printf("Case %d: %d\n",cases++,f[n]);
}
}