long long c[100][50];
void C(long long n,long long m)
{
long long i,j;
if(m>n/2)
m=n-m;
memset(c,0,sizeof(c));
for(i=0;i<=m;i++)
c[0][i]=c[1][i]=1;
for(i=0;i<=m;i++)
c[i][i]=1;
for(i=0;i<=n;i++)
c[i][0]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(i!=j)
c[i][j]=(c[i-1][j]+c[i-1][j-1]);
}
}
}
组合数取模
const int mod=10056;
int combine(int n,int m) //计算组合数C(n,m)
{
int sum=1; //线性计算
for(int i=1,j=n;i<=m;i++,j--)
{
sum=sum*j/i;
sum=sum%mod;
}
return sum;
}