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

整数をC++の一意の自然数のn乗の合計として表現できる方法を見つける


このチュートリアルでは、整数を一意の数のn乗の合計として表現できる方法の数を見つけるプログラムを作成します。

2つの整数数値があります およびパワー 。そして、与えられたをいくつの方法で表現できるかを見つける必要があります。 一意の自然数のn乗の合計として。例を見てみましょう。

入力 −数=50、電力=2

出力 − 3

2の累乗の合計として4を書くことができる唯一の方法があります。

問題を解決するために再帰を使用します。問題を解決するための手順を見てみましょう。

  • 数と電力を初期化します。

  • 適切な名前で再帰関数を記述します。 数値を受け入れます 、パワー およびi 引数として。

  • 番号の場合 ゼロ未満またはpow(i、power) 数値より大きい 、次に0を返します。

  • 数値がゼロの場合、またはpow(i、power)が数値と等しい場合は、1を返します。

  • ウェイの総数を計算するための関数の再帰呼び出しが2つあります

    • iをインクリメントします 。

    • 最初の再帰呼び出しで、指定された番号よりも小さい番号を確認します。

    • 2回目の再帰呼び出しで、指定された番号を確認します。

コードを見てみましょう。

#include <bits/stdc++.h>
using namespace std;
int findPossibleWaysCount(int number, int power, int i = 1) {
   if(number < 0 || number < pow(i, power)) {
      return 0;
   }
   if(number == 0 || number == pow(i, power)) {
      return 1;
   }
   return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1);
}
int main() {
   // initializing the number and power
   int number = 50, power = 2;
   cout << findPossibleWaysCount(number, power) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の結果が得られます。

3

結論

チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。


  1. 数値がC++で2つの三角数の合計として表現できるかどうかを確認します

    このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #

  2. Pythonで一意の数のn乗の合計である数を取得できる方法の数を見つけるためのプログラム

    数xと別の数nがあるとします。いくつかの一意の数のn乗の合計としてxを取得できる方法をいくつか見つける必要があります。 したがって、入力がx =100 n =2の場合、可能な解は6 ^ 2 + 8 ^ 2、10 ^ 2、および1 ^ 2 + 3 ^ 2 + 4 ^ 2 + 5 ^であるため、出力は3になります。 2 + 7^2。 これを解決するには、次の手順に従います- ans:=0 solve()と呼ばれるメソッドを定義します。これは4つのパラメーターx、n、cn、cs、初期値を取ります cs =0、cn=1の値 p:=cn ^ n p + cs