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号