Cho hai số num và power làm đầu vào. Mục đích là để tìm ra các cách trong đó num có thể được biểu diễn dưới dạng tổng các số tự nhiên duy nhất được nâng lên thành lũy thừa đã cho. Nếu num là 10 và lũy thừa là 2 thì chúng ta có thể biểu diễn 10 là 12 + 32. Vì vậy, tổng cộng 1 cách.
Ví dụ
Đầu vào
num=30
Đầu ra
Count of ways to express a number as sum of powers are: 2
Giải thích
The ways in which we can express 30 as sum of powers: 12 + 22 + 52 and 12 + 22 + 32 + 42
Đầu vào
num=35
Đầu ra
Count of ways to express a number as sum of powers are: 1
Giải thích
The ways in which we can express ‘num’ as sum of powers: 22 + 32
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau -
Trong cách tiếp cận này, trước tiên chúng ta kiểm tra xem số có phải là lũy thừa của bất kỳ num power nào không . Nếu có thì trả về các cách là 1, nếu không thì kiểm tra đệ quy tổng num power + (num + 1) power .
-
Lấy hai số nguyên num và lũy thừa làm đầu vào.
-
Hàm sum_of_powers (int num, int power, int val) nhận một num và trả về số lượng các cách để biểu thị ‘num’ dưới dạng tổng các số tự nhiên duy nhất được nâng lên thành lũy thừa đã cho.
-
Kiểm tra =(num - pow (val, power)). Nếu chọn là 0 thì trả về 1 vì bản thân số đó là val power .
-
Nếu séc nhỏ hơn 0 thì trả về 0.
-
Nếu không, hãy lấy temp =val + 1.
-
Trả về tổng của (sum_of_powers (check, power, temp) + sum_of_powers (num, power, temp)).
-
Cuối cùng, chúng tôi sẽ có các cách để trả lại giá trị.
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Count of ways to express a number as sum of powers are: 2