0
已解决
李宜和
高级启示者
高级启示者
3986 计算组合数C(m, n)
经验值:0 时间限制:1000毫秒
题目描述 Description
给定两个非负整数m和n,编写函数计算组合数C(m,n)的值。其中C(m,n)=m!/((m-n)!*n!)
n!指n的阶乘,n!=1*2*3*……*(n-2)*(n-1)*n
输入描述 Input Description
输入一行,两个数字,分别是m和n,数字之间用空格隔开
输出描述 Output Description
输出一行,一个数字
样例输入 Sample Input
3 2
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
0<=n<=m<=10
求思路(其中C(m,n)=m!/((m-n)!*n!)n!指n的阶乘,n!=1*2*3*……*(n-2)*(n-1)*n)我懵了
0
已采纳
高乐彤
修练者
修练者
cin>>m>>n;
int a=ans(m),b=ans(n),c=ans(m-n);
cout<<a/(b*c);
核心
ans函数是求阶乘
高乐彤在2021-08-11 10:27:01追加了内容
注意:ans函数用递归超时!!!
一个班的,求采纳!
0
朱小川
缔造者
缔造者
主函数外的核心
long long s=1;
for(int i=1;i<=n;i++){
s*=i;
} //函数自己定义
主函数的核心
cout<<jc(m)/(jc((m-n))*jc(n));
0
王文博
缔造者之神
缔造者之神
阶乘函数:
long long f(int t)
{
int sum=1;
for(int i=1;i<=t;i++)
{
sum*=i;
}
return sum;
}
这个很简单
0
0
李奕歌
初级天翼
初级天翼
long long jc(int n){
long long s=1;
for(int i=1;i<=n;i++){
s*=i;
}
return s;
}
主函数核心:
cout<<jc(m)/(jc((m-n))*jc(n));
0
0
张展嘉
新手天翼
新手天翼
- #include<iostream> #include<algorithm> using namespace std; int n; string a[10005]; string count(string &s){ int sum=0; string b; for(int i=0;i<s.size();i++){ if(s[i]>='0'&&s[i]<='9'){ b+=s[i]; } } return b; } int c(string &b){ int sum=0; for(int i=0;i<b.size();i++){ if(b[i]>='0'&&b[i]<='9'){ sum+=b[i]-'0'; } } return sum; } bool cmp(string a,string b){ if(c(a)!=c(b)){ return c(a)>c(b); }else if(count(a)!=count(b)){ return count(a)<count(b); } return a<b; } int main(){ cin>>n; getline(cin,a[1]); for(int i=1;i<=n;i++){ getline(cin,a[i]); } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++){ cout<<a[i]<<endl; } }
0
张展嘉
新手天翼
新手天翼
#include<iostream>
#include<algorithm>
using namespace std;
int n;
string a[10005];
string count(string &s){
int sum=0;
string b;
for(int i=0;i<s.size();i++){
if(s[i]>='0'&&s[i]<='9'){
b+=s[i];
}
}
return b;
}
int c(string &b){
int sum=0;
for(int i=0;i<b.size();i++){
if(b[i]>='0'&&b[i]<='9'){
sum+=b[i]-'0';
}
}
return sum;
}
bool cmp(string a,string b){
if(c(a)!=c(b)){
return c(a)>c(b);
}else if(count(a)!=count(b)){
return count(a)<count(b);
}
return a<b;
}
int main(){
cin>>n;
getline(cin,a[1]);
for(int i=1;i<=n;i++){
getline(cin,a[i]);
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<endl;
}
}