游客 Signup | Login
中文 | En

1993 - 活动方案

山东建筑大学ACM协会队伍越来越强大了,为此,ACM协会想为大家准备一个party,party节目由会员们表演。消息一出,报名要表演节目的fans很多,多达N个,尤其是淘气的德才、非要嚷着要上台唱嗨歌,但是由于场地和时间有限,只能从这n个人中选m个,请问一共有多少种选择方法?

Input

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

Output

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

Examples

Input

5
3 2
5 3
4 4
3 6
8 0

Output

3
10
1
0
1

Solution C

#include<stdio.h>
double fact(int n);
int main(void)
{
    int i,n,a,b;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d%d",&a,&b);
        if(a<b) printf("0\n");
        else printf("%.0f\n",fact(a)*1.0/(fact(b)*fact(a-b)));
    }
    return 0;
}
double fact(int n)
{
    int i;
    double s=1;
    for(i=1;i<=n;i++)
        s=s*i;
    return s;
}

Solution C++

#include<stdio.h>
long long int  f(int n,int m)
{
    if(n==m||n==0||m==0)return 1;
    if(m==1)return n;
   else  return f(n-1,m)+f(n-1,m-1);
}  
int t,m,n;
int main()
{
  scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&m);
            if(n>=m)
            {
                printf("%lld\n",f(n,m));
            }
    
            else printf("0\n");
        }
    return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题