0
点赞
收藏
分享

微信扫一扫

POJ 2249 Binomial Showdown 求组合数

ITWYY 2023-02-08 阅读 55


Binomial Showdown

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

4 2
10 5
49 6
0 0

Sample Output

6
252
13983816

Source

​​Ulm Local 1997​​

 

 

 

 

 

Time Limit: 1000MS

 

Memory Limit: 65536K

Total Submissions: 21165

 

Accepted: 6491

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

4 2
10 5
49 6
0 0

Sample Output

6
252
13983816

Source

​​Ulm Local 1997​​

模板题,求组合数汇总(​​点这里​​)

#include<cstdio>  
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<deque>
#include<queue>
using namespace std;
typedef long long ll;
ll a[100000000];

ll C(ll n,ll m)
{

if (n - m < m)
m = n - m;
a[0] = 1;
for (int i = 1; i <= m; i++)
{
a[i] = (n - i + 1) * a[i - 1] / i;
}
return a[m];
}
int main()
{
ll n,m;
while (~scanf("%lld%lld",&n,&m) && (n || m))
{

cout<<C(n,m)<<endl;
}
}

 

举报

相关推荐

0 条评论