答案為 C(n, k)  ( 題目都說了...)

 

因為 3<= n, k <= 20

因此最大值為 C(20, 10)

利用 unsigned long long int 即可

倘若沒此限制,就得先質因數分解並約分

 

#include <iostream>

using namespace std;

int main()
{
    int case_num;
    while(cin >> case_num){
        for(int i = 0; i<case_num; i+=1){
            int n, k;
            cin >> n >> k;
                
            if(n-k < k) k = n-k;

            unsigned long long int numerator = 1, denominator = 1;    
                
            for(int j = 0; j<k; j+=1){
                numerator *= n-j;
                denominator *= (j+1);
            }

            cout << numerator / denominator << endl;
        }
    }

    return 0;
}

arrow
arrow
    全站熱搜

    大神(偽) 發表在 痞客邦 留言(0) 人氣()