题目描述
组合公式C(x,y)=x!/(y!*(x-y)!),现在给出x和y,请求出C(x,y)
输入描述
输入有多行,每行包含两个数x,y(1<x、y<=50)
输出描述
对于每行输入,输出一行计算结果
输入样例
6 4
10 5
15 7
输出样例
15
252
6435
#include <iostream>
using namespace std;
_int64 c(int x, int y) { // 返回值使用_int64 因为组合公式C(x,y)=x!/(y!*(x-y)!),每次计算的过程会超出int类型的数据范围
int i, j = 1;
_int64 c = 1;
for (i = x; j <= y; i--) {
c = c * i / j;
j++;
}
return c;
}
int main() {
int x, y;
while(cin >> x >> y){
if(x <= 50 && y <= 50 && 1 < x && 1 < y){ // (1<x、y<=50)
cout << c(x, y) << endl;
}else{
break;
}
}
}