(C)
#包括<stdio.h>
#包括<stdlib.h>
#包括<math.h>
#定义MAXCLU 7
#定义MAXZONE 256
long-long组合(int n,int k){
如果(n<k),返回0;
long-long ans=1;
k=k>n-k?n-k:k;
整数j=1;
对于(;j<=k;j++,n-){
如果(n%j==0){
ans*=不适用;
}else if(ans%j==0){
ans=ans/j*n;
}
其他{
ans=(ans*n)/j;
}
}
返回ans;
}
int主(){
long long a[MAXCLU][MAXZONE];
长长和[MAXCLU];
整数j,k,i;
对于(j=0;j<MAXCLU;j++){
总和[j]=0;
对于(k=1;k<MAXZONE;k++)a[j][k]=0;
}
a[0][1]=1;
对于(j=1;j<MAXCLU;j++)
对于(k=1;k<(exp2(j)+1);k++)
对于(i=1;i<k;i++)
a[j][k]=a[j][k]+a[j-1][i]*组合(i,k-i);
对于(j=0;j<MAXCLU;j++)
对于(k=1;k<exp2(j)+1;k++)
总和[j]=总和[j]+a[j][k];
对于(k=0;k<=exp2(MAXCLU-1));k++){
对于(j=0;j<MAXCLU;j++){
如果(j<5){
如果(k==0)printf(“%5lld”,总和[j]);
else printf(“%5lld”,a[j][k]);
}
其他{
如果(k==0)printf(“%15lld”,sum[j]);
else printf(“%15lld”,a[j][k]);
}
}
printf(“\n”);
如果(k==0)打印f(“\n”);
}
}
|