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

C++の数値の5乗根


この問題では、数値Nが与えられます。私たちのタスクは、数値の5乗根のフロア値を見つけることです。

5番目のルート 数の数は、それ自体に5倍を掛けたときに数を返す数です。

N 1/5 の場合 =a then、 a * a * a * a * a =N

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

入力: N =325

出力: 3

説明:

325の5乗根は3.179で、フロア値は3です。

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

この問題の簡単な解決策は、1からnまでトラバースすることです。そして、それ自体に5倍したときに数を与える数を見つけます。

ここでは、数値が必ずしも完全な5乗であるとは限らないため、正確な値を見つけることはできません。したがって、5乗をnより大きくする最初の値を見つけてから、値-1を返し、フロアの5乗根を取得します。

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

#include<iostream>
using namespace std;

int calcFifthRoot(int n) {
   
   if (n == 0 || n == 1)
      return n;

   int a = 0;
   for(a = 1; a*a*a*a*a < n ; a++){
     
   }
   return (a - 1);
}

int main() {
   
   int n = 325;
   cout<<"The Floor of fifth root of "<<n<<" is "<<calcFifthRoot(n);
   return 0;
}

出力-

The Floor of fifth root of 325 is 3

このアルゴリズムは優れていますが、問題に対するより有望な解決策がある可能性があります。これは、検索アルゴリズムを更新し、二分探索を使用することで実行できます。 アルゴリズム 数値の5乗根を検索します。

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

#include<iostream>
using namespace std;

int calcFifthRoot(int n)
{
   if (n == 0 || n == 1)
   return n;

   int start = 1, end = n, root = 0;
   while (start <= end)
   {
      int a = (start + end) / 2;
      long int apowfive = a*a*a*a*a;

      if (apowfive == n)
         return a;
      if (apowfive < n) {
         
         start = a + 1;
         root = a;
      }
      else
         end = a - 1;
   }
   return root;
}

int main() {
   
   int n = 250;
   cout<<"The floor of fifth root of "<<n<<" is "<<calcFifthRoot(n);
   return 0;
}

出力-

The floor of fifth root of 250 is 3

  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 次の図から出力を確認できます- この問題については、可能な限り、これは一種のシリーズであるため、ソリューションでこのシリーズのパターンを見つけようと