当前位置:编程学习 > C/C++ >>

问题一百三十一:组合数

Description


求C(N, M),即求M个数中选N个数的组合方案数。


Input


第一行一个正整数T (T<=10), 表示有T组测试数据。第二行~第T+1行,每行有2个正整数N,M (1<=N, M<=20)。


Output


对于每组输入N,M,输出一行,该行有一个数,为C(N, M)值。


Sample Input

 


2
3 5
1 20


Sample Output

 


10

20


[plain]  #include <stdio.h> 
 
__int64 fac(int a); 
 
int main() 
{    
      int num; 
      int n; 
      int m; 
      scanf("%d", &num); 
 
      while(num--) 
      { 
          scanf("%d %d", &n, &m); 
 
          printf("%d", fac(m)/fac(n)/fac(m-n)); 
           
          if(num>0) 
          { 
             printf("\n"); 
          } 
      } 
 
      return 0; 

 
__int64 fac(int a) 

     int i; 
     __int64 sum; 
 
     sum=1; 
     if(a==0) 
     { 
        sum=1; 
     } 
     else 
     { 
        for(i=1; i<=a; i++) 
        { 
           sum*=i; 
        } 
     } 
 
     return sum; 

#include <stdio.h>

__int64 fac(int a);

int main()
{  
   int num;
   int n;
   int m;
      scanf("%d", &num);

   while(num--)
   {
       scanf("%d %d", &n, &m);

    printf("%d", fac(m)/fac(n)/fac(m-n));
   
    if(num>0)
    {
       printf("\n");
    }
   }

      return 0;
}

__int64 fac(int a)
{
  int i;
  __int64 sum;

  sum=1;
     if(a==0)
  {
     sum=1;
  }
  else
  {
     for(i=1; i<=a; i++)
  {
     sum*=i;
  }
  }

  return sum;
}

 \
 

补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,