编写程序,根据公式C_n^m = \frac{n!}{(n-m)!\times m!}Cnm=(n−m)!×m!n!计算出从n个不同元素中取出m个元素(m≤n)
给出两个正整数m和n(m≤n≤100)
输入 2 7 输出21,
怕n过大,直接double输出;下面上代码(代码部分正确)
#include <stdio.h>
#include <math.h>
double f(double a)
{ double i=1,z=1;
if(a==0)
return 1;
else
{
for(i=1;i<=a;i++)
{
z=z*i;
}
return z;
}}
int main(int argc,char *argv[])
{ long y;
double n,m,s1,s2,s3,c=0;
scanf("%lf %lf",&m,&n);
s1=f(n);
s2=f(m);
s3=f(n-m);
c=(s1/(s3*s2));
printf("%d",(int)c);
}
我满怀信心的提交,结果部分正确,没有ac,我还得找bug。
我用尽我的调试手段依然找不到。
突然我想到把最后1行代码改为printf("%.f",c);
然后ac了,我不知道为啥就ac,求大佬指点。