答案為 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;
}
全站熱搜
留言列表