#include
int factorial(int a)
{
int s=1,i;
for(i=a;i>0;i--)
{
s=s*i;
}
return s;
}
int main(int argc, char *argv[])
{
int m,n;
scanf("%d %d",&m,&n);
printf("%d",factorial(m)/(factorial(n)*factorial(m-n)));
return 0;
}
求大佬指点哪错了?
注意下数据范围是多少,如果m太大需要用大整数处理
试下使用long long行不行
也可以修改一下计算函数减少计算量防止溢出,不过既然题里都提示了用阶乘函数,应该用longlong就可以解决。
long long int C(int m, int n){
int k = ( m - n > n ) ? n : m-n;
long long int result = 1;
for(int i = 0; i < n; i++){
result = result * ( m - i ) / ( 1 + i );
}
return result;
}