您的位置:首页 > 其它

ZOJ 1938 Binomial Showdown

2013-05-21 07:42 357 查看
求C(n, k) 边乘边除就可以了,但是要注意C(n, k) = c(n, n - k) 如果k > n / 2 就要换成n - k, 否则会超时.

#include <iostream>
#include <cstdio>
using namespace std;
long long n, k;
int main(){
while (scanf("%lld %lld", &n, &k)){
if(!n && !k)break;
if(k > n / 2){
k = n - k;
}
long long ans = 1, t = n;
for (int i = 1; i <= k; ++i, t--){
ans = ans * t;
ans /= i;
}
printf("%lld\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: