组合数的计算
组合数的计算
Time Limit: 2000ms Memory limit: 32768K 有疑问?点这里^_^
题目描述
给定n组整数(a,b),计算组合数C(a,b)的值。如C(3,1)=3,C(4,2)=6。
输入
第一行为一个整数n,表示有多少组测试数据。(n <= 100000)
第2-n+1行,每行两个整数分别代表a,b;中间用空格隔开。(a,b <= 40)
输出
对于每组输入,输出其组合数的值。每个输出占一行。
示例输入
4
3 1
4 2
5 0
1 1
示例输出
3
6
1
1
提示
来源
moon
示例程序
#include <stdio.h>
int main()
{
long long int n,a,b,i,j;
long long int sum1,sum2;
scanf("%lld",&n);
while(n--)
{
sum1=1,sum2=1;
scanf("%lld %lld",&a,&b);
if(a==b||b==0)
{
printf("1\n");
continue;
}
for(i=a,j=1;j<=b;j++,i--)
{
sum1*=i;
sum2*=j;
if(sum1%sum2==0)
{
sum1=sum1/sum2;
sum2=1;
}
}
printf("%lld\n",sum1/sum2);
}
return 0;
}
还没有评论,来说两句吧...