组合数的计算

太过爱你忘了你带给我的痛 2022-08-10 04:58 317阅读 0赞

组合数的计算

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)

输出

对于每组输入,输出其组合数的值。每个输出占一行。

示例输入

  1. 4
  2. 3 1
  3. 4 2
  4. 5 0
  5. 1 1

示例输出

  1. 3
  2. 6
  3. 1
  4. 1

提示

来源

moon

示例程序

  1. #include <stdio.h>
  2. int main()
  3. {
  4. long long int n,a,b,i,j;
  5. long long int sum1,sum2;
  6. scanf("%lld",&n);
  7. while(n--)
  8. {
  9. sum1=1,sum2=1;
  10. scanf("%lld %lld",&a,&b);
  11. if(a==b||b==0)
  12. {
  13. printf("1\n");
  14. continue;
  15. }
  16. for(i=a,j=1;j<=b;j++,i--)
  17. {
  18. sum1*=i;
  19. sum2*=j;
  20. if(sum1%sum2==0)
  21. {
  22. sum1=sum1/sum2;
  23. sum2=1;
  24. }
  25. }
  26. printf("%lld\n",sum1/sum2);
  27. }
  28. return 0;
  29. }

发表评论

表情:
评论列表 (有 0 条评论,317人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算组合

    Problem Description 计算组合数。C(n,m),表示从n个数中选择m个的组合数。 计算公式如下: 若:m=0,C(n,m)=1 否则, 若

    相关 组合

    组合数 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)