题意:输入两个数,m,n;计算C(m,n)。
乍一看难度不高,但是有许多细节需要注意
- 数值的范围,很大,需要用double。
- 不能过多用for循环,否则会超时。
- 相乘与相除的次数可以转换为一样的。
#include<stdio.h>
int main()
{
double m,n,i,p;
double a;
while ( scanf("%lf%lf",&m,&n)!=EOF)
{
if( n>m/2)
n=m-n;
if(m==0&&n==0)
break ;
a=1;
p=n;
for ( i=m ;p>0 ;i--,p--)
{
a=a*i;
a=a/p;
}
printf("%.0lf\n",a);
}
return 0;
}