3836. 计算组合数
Constraints
Time Limit: 1 secs, Memory Limit: 256 MB
Description
从n个不同物品中选出m个的选法总数用组合数C(n, m)来表示. 已知n和m,求C(n, m)的值.
Input
输入包含多组测试数据.
输入的每行是两个整数n和m(0<=m<=n<=10).
m和n都为0时表示输入结束.
Output
输出的每行是一个C(n, m)的值.
Sample Input
5 2
3 1
10 10
0 0
Sample Output
10
3
1
Problem Source
林瀚
// Problem#: 3836
// Submission#: 1984668
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
while(n!=0 || m!=0){
float zuhe;
float r;
int pI=n,pII=m,pIII=n-m;
int x;
if(pI==0){
pI=1;
}
if(pII==0){
pII=1;
}
if(pIII==0){
pIII=1;
}
for(x=pI-1;x>=1;x--){
pI*=x;
}
for(x=pII-1;x>=1;x--){
pII*=x;
}
for(x=pIII-1;x>=1;x--){
pIII*=x;
}
r=pI/(pII*pIII);
cout<<r<<endl;
cin>>n>>m;
}
return 0;
}