本代码参考《算法竞赛--入门经典(第二版)》---刘汝佳
--p63
计算组合数:编写函数,参数是两个非负整数n和m;返回组合数的值。
然后直接上代码:
#include <iostream>
#include <cstdio>
using namespace std;
long long C(int n,int m)
{
if(m<n-m) m=n-m; //利用组合数的性质
long long ans=1;
for(int i=m+1;i<=n;i++)
ans*=i;
for(int i=1;i<=n-m;i++)
ans/=i;
return ans;
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int s=0;
s=C(n,m);
printf("%d\n",s);
}
return 0;
}