重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include stdio.h
为南关等地区用户提供了全套网页设计制作服务,及南关网站建设行业解决方案。主营业务为网站建设、做网站、南关网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
void main()
{
void choose(int a,int b);
int a,b,c,d;
printf("请输入两个整数,以0,0结束\n");
scanf("%d,%d",a,b);
scanf("%d,%d"银扰,c,d);
if(c==0d==0)
choose(a,b);
}
void choose(int a,int b)
{
if(ba)
{
printf("error!");
}
else
{
int fenmu=b,fenzi=a;
for(int i=a-1;ia-b;i--)
fenzi*=i;
for(int j=b-1;j1;j--)
fenmu*=j;
int temp;
temp=fenzi/fenmu;
printf("信搏雹滑帆%d",temp);
}
}
实现的算法很多, 下面给并搏明出一个不需要递归的算法; 需要设计两个函数。
unsigned long factorial (unsigned long n);
long long perm(unsigned long m, unsigned long n);
unsigned long factorial (unsigned long n)
{
unsigned long value = (n == 0) ? 1 : n;
while( n = 2 )
value *= --n;
return value;
}
long long perm(unsigned long m, unsigned long n)
{
if (m n)
return -1;
else
return (unsigned long) (factorial(n)/factorial(n-m));
}
只为了mn就要返回-1, 有点绝告浪费啊~~~
注意求值范围,银祥 如果需要可以int64扩展。。。
double fact(long num)
{
for (long 森绝御i = 1; num 0; num--)
{
i *= num;
}
}
int main()
{
long m;
long n;
long C;
scanf("%ld %ld", m, n);
C = 宏启fact(n) / ((fact(m)) * fact(n-m));
printf("%ld",C);
此岩
return 0;
}
#include stdio.h森亏陵
unsigned long combinNum(int m,int n)
{
int i;
unsigned long x=1;
if(n0||nm)return 0;
for(i=m;im-n;i--)
空闹x=x*i/(m+1-i);
return x;
}
void main()
{
int m,n;
scanf("%d%d",此戚m,n);
printf("%ld\n",combinNum(m,n));
}