组合数运行超时
/*描述 求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; }