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

C++에서 고유한 자연수의 n승의 합으로 정수를 표현하는 방법 찾기

<시간/>

이 튜토리얼에서는 정수가 주어진 고유수의 n승의 합으로 표현될 수 있는 방법의 수를 찾는 프로그램을 작성할 것입니다.

두 개의 정수 숫자가 있습니다. 및 . 그리고 우리는 주어진 숫자를 얼마나 많은 방법으로 나타낼 수 있는지 찾아야 합니다. 고유한 자연수의 n승의 합. 예를 들어 보겠습니다.

입력 - 숫자 =50, 거듭제곱 =2

출력 - 3

2의 거듭제곱의 합으로 4를 쓸 수 있는 유일한 방법이 있습니다.

우리는 문제를 해결하기 위해 재귀를 사용할 것입니다. 문제를 해결하는 단계를 살펴보겠습니다.

  • 숫자와 전원을 초기화합니다.

  • 적절한 이름으로 재귀 함수를 작성하십시오. 숫자를 허용합니다. , 그리고 인수로.

  • 숫자인 경우 0보다 작거나 pow(i, power) 숫자보다 큼 , 0을 반환합니다.

  • 숫자가 0이거나 pow(i, power)가 숫자와 같으면 1을 반환합니다.

  • 총 방법 수를 계산하는 함수에 대한 두 개의 재귀 호출이 있습니다.

    • i 증가 .

    • 첫 번째 재귀 호출에서 지정된 번호보다 작은 번호를 확인합니다.

    • 두 번째 재귀 호출에서 지정된 번호를 확인합니다.

코드를 봅시다.

#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

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.