1052 - ACM CLUB晚会

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

ACM CLUB的会员越来越多了,为此,ACM CLUB想为会员们准备一个晚会,晚会节目由会员们表演。消息一出,报名要表演节目的会员很多,多达N个,但是由于场地和时间有限,只能从这N个人中选M个,请问一共有多少种选择方法?

题目输入

数据的第一行是一个正整数T,接下来有T组数据,每组数据占一行。
每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)。

题目输出

每组数据输出一个整数,每个输出占一行。

输入/输出样例

输入格式

5
3 2
5 3
4 4
3 6
8 0

输出格式

3
10
1
0
1

C语言解答

#include<stdio.h>

int main()
{
	int t,n,m,i;
	double s1,s2;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&m);
		if(n<m)
			printf("0\n");
		else
		{
			for(s1=1,i=n-m+1;i<=n;i++)
				s1*=i;
			for(s2=i=1;i<=m;i++)
				s2*=i;
			printf("%.lf\n",s1/s2);
		}
	}
	return 0;
}

C++解答

#include<stdio.h>

int main()
{
	int t,n,m,i;
	double s1,s2;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d%d",&n,&m);
		if(n<m)
			printf("0\n");
		else
		{
			for(s1=1,i=n-m+1;i<=n;i++)
				s1*=i;
			for(s2=i=1;i<=m;i++)
				s2*=i;
			printf("%.lf\n",s1/s2);
		}
	}
	return 0;
}

Java解答

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Scanner;
import java.math.*;
public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String[] zong = in.nextLine().split(" ");
		int start=Integer.parseInt(zong[0]);
		for(int i=0;i<start;i++){
			String[] nei= in.nextLine().split(" ");
			int[] zh=new int[2];
			zh[0]=Integer.parseInt(nei[0]);
			zh[1]=Integer.parseInt(nei[1]);
			if(zh[0]<zh[1]){System.out.println("0");continue;}
			System.out.println(check(zh[0],zh[1]));
			
		}
			
		
	}


	
private static  BigInteger check(int a, int b) {
		// TODO Auto-generated method stub
	BigInteger c = new BigInteger("0");
		c=jx(a).divide((jx(b).multiply(jx(a-b))));
	return c;
	}



public static int jc(int i){      
    if(i<0)                          //<0退出
       return -1;
    else if(i==0)                     //0的阶乘=1
       return 1;
     else//0继续递归
       return i*jc(i-1);
}
public static BigInteger jx(int i){
	  BigInteger n = new BigInteger("1");
	  BigInteger n1 = new BigInteger("1");
	  for (int j = 1; j <= i; j++) {
	   n1 = n.multiply(BigInteger.valueOf(j));
	   n = n1;
	  }
	return n;

}
}

Python解答

import sys,math

for line in sys.stdin:
        t = line.split()
        data = map(lambda x:int(x),t)
        if len(data) != 1:
           if data[0] == data[1] or data[1] == 0:
               print 1
           elif data[1] > data[0]:
               print 0
           else:
              a = math.factorial(data[0])
              b = math.factorial(data[1])
              c = math.factorial(data[0]-data[1])
              print  a/(b*c)
        else:
               pass