Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

정수가 고유한 자연수의 n승의 합으로 표현될 수 있는 방법을 찾는 C++ 프로그램

<시간/>

이 기사에서는 정수(예:X)를 고유한 자연수의 n승의 합으로 표현하는 방법을 찾는 프로그램에 대해 논의할 것입니다.

예를 들어, X =100 및 n =2

그러면 100을 자연수의 제곱의 합으로 표현하는 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