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

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


この記事では、整数(たとえばX)を一意の自然数のn乗の合計として表現する方法を見つけるプログラムについて説明します。

たとえば、X=100およびn=2

次に、100を自然数の2乗の合計として表す3つの方法があります。

100 = 102
100 = 62 + 82
100 = 12 + 32 + 42 + 52 + 72

これは、再帰を使用することで簡単に実行できます。 1から始めて、指定された数のn乗根まで進みます。すべての実行で、与えられた数から自然数のn乗(1から始まり)を、数が未満になるまで減算します。これにより、自然数のn乗の合計として数を表す方法がわかります。

#include<iostream>
#include <math.h>
using namespace std;
int result = 0;
int ways(int number, int a, int init, int n){
   if (a == 0) {
      result++;
   }
   //setting the higher limit
   int max = (int)floor(pow(number, 1.0 / n));
   for (int i = init + 1; i <= max; i++) {
      //subtracting n-th power values starting from 1
      int b = a - (int)pow(i, n);
      if (b >= 0)
         ways(number, a - (int)pow(i, n), i, n);
   }
   return result;
}
int main() {
   int a = 100, n = 2;
   cout << ways(a, a, 0, n);
   return 0;
}

出力

3

  1. 最初のn個の自然数の二乗和のためのC++プログラム?

    この問題では、最初のn個の自然数の2乗の合計を取得する方法を確認します。ここでは、1からnまで実行されるforループを使用しています。各ステップで、項の2乗を計算し、それを合計に追加します。このプログラムは、完了するまでにO(n)時間かかります。しかし、これをO(1)または一定時間で解きたい場合は、この級数式-を使用できます。 アルゴリズム squareNNatural(n) begin    sum := 0    for i in range 1 to n, do       sum := sum + i^2 &

  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