【C++解题报告】求组合数(定义函数)

来源:互联网 发布:手写图片识别软件 编辑:程序博客网 时间:2024/04/30 10:03
题目来源:

    基础班《函数、递归、递推》,函数第2题。

题目描述:
    用定义函数的方式,入非负的整数nm,输出组合数C

输入格式:
   
    输入n,m。

输出格式:
    
    输出C。

输出样例:

     5 3

输出样例:

    10

数据规模与约定:
    
    m<=n<=20。

题目思路:

    由题目发现,求组合数C中,我们要用到多次阶乘的计算(n!,m!,(n-m)!)。所以定义一个计算阶乘的函数(函数名定义为:FA(Factorial))。通过数据范围知道,m<=n<=20,n和m最大为20,当n=20时,n!将变得十分大(2561327494111820313)如果将n,m定义为int类型,大数据将会炸掉。所以定义的数据类型要开为long long。

代码:

//实现输出组合数 #include<iostream>//头文件 using namespace std;long long FA(long long a) //定义阶乘函数FA{long long b=1;//定义变量bfor(int i=1;i<=a;i++)//计算阶乘    b*=i;return b;//返回值得到b=a! }int main()//定义主函数 {long long n,m;//定义变量n,m。 cin>>n>>m;//输入n,m。 cout<<FA(n)/(FA(m)*FA(n-m));//计算并输出组合数 C=n!/(m!*(n-m)!) return 0;}

0 0
原创粉丝点击