입력으로 두 개의 숫자 num과 power가 제공됩니다. 목표는 num이 주어진 거듭제곱으로 거듭난 고유한 자연수의 합으로 표현될 수 있는 방법을 찾는 것입니다. num이 10이고 거듭제곱이 2이면 10을 12+32로 나타낼 수 있습니다. 총 1방향입니다.
예를 들어
입력
num=30
출력
Count of ways to express a number as sum of powers are: 2
설명
The ways in which we can express 30 as sum of powers: 12 + 22 + 52 and 12 + 22 + 32 + 42
입력
num=35
출력
Count of ways to express a number as sum of powers are: 1
설명
The ways in which we can express ‘num’ as sum of powers: 22 + 32
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다. -
이 접근 방식에서 우리는 먼저 숫자 자체가 임의의 num power 의 거듭제곱인지 확인합니다. . 그렇다면 1로 방법을 반환하고, 그렇지 않으면 재귀적으로 sum num power 를 확인합니다. + (숫자+1) 힘 .
-
두 개의 정수 num과 power를 입력으로 사용합니다.
-
함수 sum_of_powers(int num, int power, int val)는 num을 취해 주어진 거듭제곱으로 거듭난 고유한 자연수의 합으로 'num'을 표현하는 방법의 개수를 반환합니다.
-
확인=(num − pow(val, power))를 확인합니다. 검사가 0이면 숫자 자체가 val power 이므로 1을 반환합니다. .
-
검사가 0보다 작으면 0을 반환합니다.
-
그렇지 않으면 temp=val+1을 사용합니다.
-
( sum_of_powers(check, power, temp) + sum_of_powers(num, power, temp) )의 합계를 반환합니다.
-
결국 우리는 값을 반환하는 방법을 얻게 될 것입니다.
예시
#include <bits/stdc++.h> using namespace std; int sum_of_powers(int num, int power, int val){ int check = (num − pow(val, power)); if(check == 0){ return 1; } else if(check < 0){ return 0; } else { int temp = val + 1; return sum_of_powers(check, power, temp) + sum_of_powers(num, power, temp); } } int main(){ int num = 25, power = 2; cout<<"Count of ways to express a number as sum of powers are: "<<sum_of_powers(num, power, 1); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of ways to express a number as sum of powers are: 2