CCF NOI1063 計算組合數
阿新 • • 發佈:2019-02-17
時間限制:
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; }