组合数运行超时
/*描述 求C(N, M),即求M个数中选N个数的组合方案数。
输入
第一行一个正整数T (T<=10), 表示有T组测试数据。第二行~第T+1行,每行有2个正整数N,M (1<=N, M<=20)。
输出
对于每组输入N,M,输出一行,该行有一个数,为C(N, M)值。
样例输入
2
3 5
1 20
样例输出
10
20
编程啦上面的题目
http://www.
*/
程序代码:#include<stdio.h>
int main()
{
int T=1;
int N=0,M=0;
int C(int N,int M);
scanf("%d",&T);
while(T>0)
{
scanf("%d%d",&N,&M);
if(N==0&&M>0)
{
printf("0\n");
}
else if(N>M/2)
{
printf("%d\n",C(M-N,M));
}
else
{
printf("%d\n",C(N,M));
}
T--;
}
return 0;
}
int C(int N,int M)
{
int sum=1,sum1=1,sum2=1;
do
{
sum1*=M;
sum2*=N;
M--;
N--;
}while(N);
sum=sum1/sum2;
return sum;
}










求解。