求组合数的值

编写程序,根据公式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,求大佬指点。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值