a623 - 3. Combination
題目描述
題目要求計算從 n 個物品中取出 m 個的組合數,公式為 n! / (m! * (n-m)!)。輸入為 n 和 m 的值,輸出為組合數。
解題思路
程式碼直接計算 n!、m! 和 (n-m)!,然後進行除法運算得到組合數。由於題目聲明不需要擔心整數溢位,因此直接使用 long long int 儲存階乘值即可。程式碼中分別計算 n! 和 m! * (n-m)!,然後進行除法運算。
複雜度分析
- 時間複雜度: O(n)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
int a,b;
while(cin >> a >> b){
long long int n=1,m=1;
for(int i=1;i<=a;i++){
n*=i;
}
for(int i=1;i<=a-b;i++){
m*=i;
}
for(int i=b;i>0;i--){
m*=i;
}
cout << n/m << endl;
}
}