标签:
ECJTU 2008 Autumn Contest
题目大意:给你两个数N和M,求组合数C(N,M)。
思路:求组合数很容易超范围,此题应该用__int64来做,并且循环的时候,在乘的同时开始除。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int zh(int N,int M)
{
    if(M > N)
        return 0;
    __int64 ans = 1;
    for(int i = N,j = 1; i >= N-M+1; --i,++j)
    {
        ans *= i;
        ans /= j;
    }
    return ans;
}
int main()
{
    int N,M,T;
    cin >> T;
    while(T--)
    {
        cin >> N >> M;
        cout << zh(N,M) << endl;
    }
    return 0;
}
标签:
原文地址:http://blog.csdn.net/lianai911/article/details/43369859