问题标题: 酷町堂:3986

0
0
已解决
王俊杰
王俊杰
高级光能
高级光能

3986   计算组合数C(m, n)
经验值:0
题目描述 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

错误代码: 
#include <iostream>
#include<cstdio>
#include <string>
#include<cmath>
using namespace std;
void cs(){
   int n,m,s=0,x=1,v=0,c=1;
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        x=x*i;
        s=s+x;
    }//m的次方
    for(int i=1;i<=n;i++){
        c=c*i;
        v=v+c;
    }//n的次方
   cout<<s/((s-v)*v);
}
int main(){
    cs();
    return 0;
}

C(m,n)=m!/((m-n)!*n!),中的 (m-n)!怎么写
??? 
 


0
已采纳
李瑞曦
李瑞曦
高级天翼
高级天翼

函数部分:

long long s1=1,s2=1,s3=1,o=m-n,s4,s5;
    for(int i=1;i<=m;i++)
        s1*=i;
    for(int i=1;i<=o;i++)
        s2*=i;
    for(int i=1;i<=n;i++)
        s3*=i;
    s4=s2*s3;
    s5=s1/s4;
    cout<<s5;

 

0
刘乐宸
刘乐宸
新手天翼
新手天翼

你这样写的有点死板,思路:

呃呃呃,你感叹号的位置错了,要写在括号前了啦!(^-^)

0
包涵宇
包涵宇
中级天翼
中级天翼

1.阶乘算错了,如果是n!,应该是:

int s=1;
for(int i=1;i<=n;i++)s*=i;

2.阶乘的结果最好是long long

3.还要计算(n-m)!

假设用t来计算阶乘结果,输出应为:

cout<<v/(t*s);

PS:望采纳!

我要回答