POJ 2249 Binomial Showdown (连乘整商求组合数)
2015-01-31 16:49
791 查看
Binomial Showdown
Description
In how many ways can you choose k elements out of n elements, not taking order into account?
Write a program to compute this number.
Input
The input will contain one or more test cases.
Each test case consists of one line containing two integers n (n>=1) and k (0<=k<=n).
Input is terminated by two zeroes for n and k.
Output
For each test case, print one line containing the required number. This number will always fit into an integer, i.e. it will be less than 231.
Warning: Don't underestimate the problem. The result will fit into an integer - but if all intermediate results arising during the computation will also fit into an integer depends on your algorithm. The test cases will go to the limit.
Sample Input
Sample Output
Source
Ulm Local 1997
题目链接:http://poj.org/problem?id=2249
题目大意:就是求组合数Ckn
题目分析:连乘k个整商Ckn = n! / (k!*(n - k)!) = ((n - k + 1) / k) * ((n - k + 2) / (k - 1)) * ... * (n / 1)
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 18412 | Accepted: 5618 |
In how many ways can you choose k elements out of n elements, not taking order into account?
Write a program to compute this number.
Input
The input will contain one or more test cases.
Each test case consists of one line containing two integers n (n>=1) and k (0<=k<=n).
Input is terminated by two zeroes for n and k.
Output
For each test case, print one line containing the required number. This number will always fit into an integer, i.e. it will be less than 231.
Warning: Don't underestimate the problem. The result will fit into an integer - but if all intermediate results arising during the computation will also fit into an integer depends on your algorithm. The test cases will go to the limit.
Sample Input
4 2 10 5 49 6 0 0
Sample Output
6 252 13983816
Source
Ulm Local 1997
题目链接:http://poj.org/problem?id=2249
题目大意:就是求组合数Ckn
题目分析:连乘k个整商Ckn = n! / (k!*(n - k)!) = ((n - k + 1) / k) * ((n - k + 2) / (k - 1)) * ... * (n / 1)
#include <cstdio> #define ll long long ll cal(ll n, ll k) { if(k > (n >> 1)) k = n - k; ll a = 1, b = 1; for(int i = 1; i <= k; i++) { a *= n + 1 - i; b *= i; if(a % b == 0) { a /= b; b = 1; } } return a / b; } int main() { ll n, k; while(scanf("%lld %lld", &n, &k) && (n + k)) printf("%lld\n", cal(n, k)); }
相关文章推荐
- POJ - 2249 - Binomial Showdown - (组合数)
- POJ 2249 Binomial Showdown(组合数)
- poj 2249 Binomial Showdown[C(n, m)组合数求解]
- POJ 2249 Binomial Showdown 求组合数C(n,k)
- POJ 2249 Binomial Showdown 求组合数C(n,k)
- poj 2249 Binomial Showdown
- poj2249 Binomial Showdown(二项式系数)
- poj 2249 Binomial showdown
- POJ 2249-Binomial Showdown(排列组合计数)
- POj 2249 Binomial Showdown 【组合数学】
- POJ2249 Binomial Showdown
- [ACM] poj 2249 Binomial Showdown (排列组合公式优化)
- [ACM] poj 2249 Binomial Showdown (排列组合公式优化)
- poj 2249 Binomial Showdown
- [ACM] poj 2249 Binomial Showdown (排列组合公式优化)
- (组合数学3.1.2.1)POJ 2249 Binomial Showdown(排列组合公式的实现)
- POJ 2249 Binomial Showdown 笔记
- ZOJ 1938 Binomial &&poj 2249 (Binomial Showdown )(睡前一水)
- poj 2249 Binomial Showdown(组合数 公式优化)
- POJ 题目2249 Binomial Showdown(数学)