CCF NOI1063 计算组合数
问题链接:CCF NOI1063 计算组合数。
时间限制: 
1000 ms  空间限制: 262144 KB
题目描述
给出两个非负整数n和m,编写程序计算组合数C(n,m)的值。
输入
  一行两个空格隔开的非负整数n,m。
输出
输出一个数表示C(n,m)。
样例输入
5 2
样例输出
10
数据范围限制
  0<n<=20,0<=m<=n。
问题分析
这是一个简单的数学计算问题,需要知道组合函数的计算公式。
  输入的数不保证m和n的大小,程序中需要注意,编写相应的逻辑应对。
程序说明
输入的n和m不大,使用类型unsigned long long即可。
  使用类型定义后,提交时需要选C++,否则程序错误。那个C语言编译器似乎不支持类型定义!郁闷啊!
要点详解
- 尽量用函数封装功能函数。
- 使用类型定义可以使得代码更加简洁。
 
参考链接:(略)。
100分通过的C语言程序:
#include <stdio.h>
typedef unsigned long long ULL;
ULL c(int n, int m)
{
    ULL ans = 1;
    if(m <= n-m)
        m = n - m;
    for(int i=m+1; i<=n; i++)
        ans *= i;
    for(int i=1; i<=n-m; i++)
        ans /= i;
    return ans;
}
int main(void)
{
    int n, m;
    scanf("%d%d", &n, &m);
    printf("%lld\n", c(n, m));
    return 0;
}
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号