C++ 中求解方程 x1 + x2 +…. + xN = k 的整數解個數
方程的解為
- 該方程的非負整數解個數為 $\left(\begin{array}{c}n-k+1\ k\end{array}\right)$
- 該方程的正整數解個數為 $\left(\begin{array}{c}k-1\ n-1\end{array}\right)$
將兩者相加即可得到所需答案。讓我們來看一個例子。
輸入
n = 4 k = 7
輸出
140
演算法
- 初始化數字 n 和 k。
- 找到非負數和正數的整數解。
- 將兩者相加。
- 返回答案。
實現
以下是上述演算法在 C++ 中的實現
#include <bits/stdc++.h>
using namespace std;
int factorial(int n) {
int product = 1;
for (int i = 2; i <= n; i++) {
product *= i;
}
return product;
}
int nCr(int n, int r) {
return factorial(n) / (factorial(n - r) * factorial(r));
}
int main() {
int n = 4;
int k = 7;
cout << nCr(n + k - 1, k) + nCr(k - 1, n - 1) &l<t; endl;
return 0;
}輸出
如果執行以上程式碼,則會得到以下結果。
140
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP