ইনপুট হিসাবে দুটি সংখ্যা সংখ্যা এবং শক্তি দেওয়া হয়েছে৷ লক্ষ্য হল প্রদত্ত শক্তিতে উত্থিত অনন্য প্রাকৃতিক সংখ্যার যোগফল হিসাবে সংখ্যাকে উপস্থাপন করা যায় এমন উপায়গুলি খুঁজে বের করা। যদি সংখ্যা 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