C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

方程式x1+x2+…の積分解の数。 + xN =C++では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

  1. C++で配布されるテディの総数を最小限に抑えます

    問題の説明 N人の学生と、学生が取得したマークを表す配列が与えられます。学校は彼らに価格としてテディを与えるために殺害しました。しかし、学校はお金を節約したいので、次の制約を課すことによって、配布されるテディの総数を最小限に抑えます- すべての生徒は少なくとも1つのテディを取得する必要があります 2人の生徒が隣り合って座っている場合、点数の高い生徒はもっと多くの生徒を獲得する必要があります 2人の生徒が同じ点数を持っている場合、異なる数のテディを取得できます 例 3人の生徒がいて、取得したマークが配列で-として表されているとします。 arr[] = {2, 3, 3} So, to

  2. C++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T