组合数学最离不开的就是Cnm这个东西了,有时候怎么快速的求变很重要。当n,m都很大的时候,如果直接递归求解做不到
那么:
最后因为要转化成整型,所以结果要+=0.5才行
void C(unsigned int n,unsigned int m)
{
double ans=1.0;
while(m>0)
{
ans*=(double)(n--)/(double)(m--);
}
ans+=0.5;//double转化为整型会强制截断小数
printf("%I64d\n",(long long)ans);
}