首页 > 代码库 > hdu2519 新生晚会

hdu2519 新生晚会

新生晚会

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9282    Accepted Submission(s): 3255


Problem Description
开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?
 

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

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

Sample Input
5 3 2 5 3 4 4 3 6 8 0
 

Sample Output
3 10 1 0 1
 


CODE:
#include<stdio.h>
main()
{
    __int64 n, m, i, s, t;
    while ( scanf ( "%I64d", &t ) != EOF )
    {
        while ( t-- )
        {
            scanf ( "%I64d%I64d", &n, &m );
            s = 1;
            if ( n < m )
                s = 0;
            else if ( m == 0 ) s = 1;
            else
            {
                if ( m > n / 2 )
                    m = n - m;
                for ( i = 1; i <= m; i++ )
                {
                    s *= ( n - i + 1 );
                    s /= i;
                }
            }
            printf ( "%I64d\n", s );
        }
    }
}


hdu2519 新生晚会