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

C++でのオイラー数


数学では、オイラー数 特殊なタイプの組み合わせ番号です。これは、次の要素が前の要素よりも特定の数大きい順列の数を定義します。

と表記

A(n、m) は1からnまでの順列で、2つの数値はmによって異なります。

問題の説明: この問題では、2つの数mとnが与えられます。そして、オイラー数である順列の数を見つける必要があります。

問題を理解するために例を見てみましょう

入力: n =4、m =2

出力: 11

説明:

1から4までの数のすべての順列は-

です

1 2 3 4 1 2 4 3 1 3 2 4 1 3 4 2 1 4 2 3 1 4 3 2
2 1 3 4 2 1 4 3 2 3 1 4 2 3 4 1 2 4 1 3 2 4 3 1
3 1 2 4 3 1 4 2 3 2 1 4 3 2 4 1 3 4 1 2 3 4 2 1
4 1 2 3 4 1 3 2 4 2 1 3 4 2 3 1 4 3 1 2 4 3 2 1

11の順列すべてのうち、2つの数mの間に違いがあります。


ソリューションアプローチ-

順列の数を見つけるために、オイラー数の式を使用します。

A(n、m)=0、m>nまたはn=0の場合
A(n、m)=1、m=0の場合
A(n、m)=(n-m)A(n-1、m-1)+(m + 1)A(n-1、m)


ソリューションの動作を説明するプログラム


#include <iostream>
using namespace std;

int countEulerianNumber(int n, int m)
{
   if (m >= n || n == 0)
      return 0;
   if (m == 0)
      return 1;
   return ( ( (n - m) * countEulerianNumber(n - 1, m - 1) ) + ( (m + 1) * countEulerianNumber(n - 1, m) ) );
}

int main() {

   int n = 5, m = 3;
   cout<<"The number of Eulerian permutations is "<<countEulerianNumber(n, m);
   return 0;
}

出力-

The number of Eulerian permutations is 26

  1. C++での質素な数

    この問題では、正の整数Nが与えられます。私たちのタスクは、与えられた数が質素な数であるかどうかをチェックするプログラムを作成することです。 不正な番号 −指定された数の素因数分解の桁数よりも厳密に桁数が多い数。 例 − 625、数625の素因数は5 4です。 。 625の桁数は3です。 5 4の桁数 は2です。 3は厳密に2より大きくなります。したがって、625は質素な数です。 最初のいくつかの質素な数は − 125、128、243、256、343、512、625など。 問題を理解するために例を見てみましょう Input: n = 128 Output: Frugal n

  2. C++五胞体数

    五胞体数は、パスカルの三角形の5番目の数として表されます。ご存知のように、これは5番目の数字です。つまり、パスカルの三角形に少なくとも5つの数字が必要です。したがって、このシリーズの最初の数字は 1 4 6 4 1から始まります。 パスカルの三角形の4行目。したがって、このチュートリアルでは、たとえば、n番目の五胞体数を見つける必要があります Input : 1 Output : 1 Input : 4 Output : 35 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと