計算組合數
阿新 • • 發佈:2018-03-17
代碼 如果 mat sca class return erro blog 原理
#include <stdio.h> #include <math.h> // 請先獨立完成,如果有困難可以翻閱本書代碼倉庫中的答案,但一定要再次獨立完成。 // “抓住主要矛盾”——始終把學習、實驗的焦點集中在最有趣的部分。如果直觀地解決方案行得通,就不必追究其背後的原理。 /** 【題目】計算組合數。 編寫函數,參數是兩個非負整數n和m,返回組合數 n!/m!(n-m)! ,其 中m≤n≤25。例如,n=25,m=12時答案為5200300。 */ /** 【分析】自定義函數n! */ long long factorial(int n) { long long result = 1; int i; for (i = 1;i <= n;i++) { result *= i; } return result; } long long C(int n,int m) { long long result; result = factorial(n) / (factorial(m)*factorial(n-m)); // 容易溢出 return result; } int main() { int n,m; scanf("%d%d",&n,&m); if (n> 25 || m<0 || m > n) { printf("input error"); return 0; } printf("%d",C(n,m)); return 0; }
溢出是個頭痛的問題。
計算組合數