ইনপুট হিসাবে দুটি সংখ্যা সংখ্যা এবং শক্তি দেওয়া হয়েছে৷ লক্ষ্য হল প্রদত্ত শক্তিতে উত্থিত অনন্য প্রাকৃতিক সংখ্যার যোগফল হিসাবে সংখ্যাকে উপস্থাপন করা যায় এমন উপায়গুলি খুঁজে বের করা। যদি সংখ্যা 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
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি −
এই পদ্ধতিতে আমরা প্রথমে পরীক্ষা করি যে সংখ্যাটি নিজেই যে কোন সংখ্যার শক্তি power . যদি হ্যাঁ হয় তবে 1 হিসাবে ফেরত দিন, যদি না হয় তাহলে বারবার চেক করুন যোগফলের সংখ্যা শক্তি + (সংখ্যা+1) শক্তি .
-
ইনপুট হিসাবে দুটি পূর্ণসংখ্যা সংখ্যা এবং শক্তি নিন।
-
ফাংশন sum_of_powers(int num, int power, int val) একটি সংখ্যা নেয় এবং প্রদত্ত পাওয়ারে উত্থিত অনন্য প্রাকৃতিক সংখ্যার যোগফল হিসাবে 'num' প্রকাশ করার উপায়গুলির গণনা প্রদান করে।
-
চেক নিন=(সংখ্যা − pow(val, power))। চেক 0 হলে 1 ফেরত দিন কারণ সংখ্যাটি নিজেই val power .
-
চেক 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