দুটি সংখ্যা num এবং power ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো num-কে কতভাবে ইউনিক প্রাকৃতিক সংখ্যার দিয়ে দেওয়া power-এর ঘাতে তোলার যোগফল হিসেবে প্রকাশ করা যায় সেটি বের করা। যদি num = 10 এবং power = 2 হয়, তবে ১০ কে ১2 + ৩2 হিসেবে প্রকাশ করা যায়। তাই মোট ১ পদ্ধতি।
উদাহরণ ১
ইনপুট
num=30
আউটপুট
একটি সংখ্যাকে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 2
ব্যাখ্যা
৩০ কে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতিগুলো: 12 + 22 + 52 এবং 12 + 22 + 32 + 42
উদাহরণ ২
ইনপুট
num=35
আউটপুট
একটি সংখ্যাকে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 1
ব্যাখ্যা
'num' কে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতি: 22 + 32
প্রয়োগ করা পদ্ধতি
এই পদ্ধতিতে প্রথমে চেক করা হয় সংখ্যাটি নিজে কি কোনো num^power। যদি হয় তবে পদ্ধতি ১ রিটার্ন, না হলে রিকার্সিভলি num^power + (num+1)^power যোগফল চেক করা হয়।
দুটি ইন্টিজার
numএবংpowerইনপুট নিন।sum_of_powers(int num, int power, int val)ফাংশনটি পদ্ধতির সংখ্যা রিটার্ন করে।check = (num - pow(val, power))ক্যালকুলেট করুন। যদিcheck == 0হয় তবে ১ রিটার্ন করুন কারণ সংখ্যাটি নিজেval^power।যদি
check < 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 << "একটি সংখ্যাকে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: " << sum_of_powers(num, power, 1);
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:
একটি সংখ্যাকে পাওয়ার যোগফল হিসেবে প্রকাশ করার পদ্ধতির সংখ্যা: 2