একটি সংখ্যাকে অন্য একটি সংখ্যার শক্তিতে উপস্থাপন করার সমস্যাটি আলোচনা কর। আমাদের দুটি সংখ্যা দেওয়া হয়েছে, x, এবং y। আমাদের বলতে হবে y কে x এর শক্তিতে উপস্থাপন করা যেতে পারে যেখানে x এর প্রতিটি শক্তি একবার ব্যবহার করা যেতে পারে, উদাহরণস্বরূপ
Input: x = 4, y = 11 Output: true Explanation: 4^2 - 4^1 - 4^0 = 11 Hence y can be represented in the power of x. Input: x = 2, y = 19 Output: true Explanation: 2^4 + 2^1 + 2^0 =19 Hence y can be represented in the power of x. Input: x = 3, y = 14 Output: false Explanation: 14 can be represented as 3^2 + 3^1 + 3^0 + 3^0 but we cannot use one term of power of x twice.
সমাধান খোঁজার পদ্ধতি
2 এর শক্তির শর্তে 19 কে কীভাবে উপস্থাপন করা হয় তার উদাহরণটি পরীক্ষা করে আমরা একটি সমীকরণ তৈরি করতে পারি −
c0(x^0) + c1(x^1) + c2(x^2) + c3(x^3) + … = y ….(1),
যেখানে c0, c1, c2 হতে পারে -1, 0, +1 বোঝাতে যে (-1) পদ বিয়োগ করা হবে কিনা, (+1) পদ যোগ করা হবে, (0) পদ অন্তর্ভুক্ত করা হবে না −
c1(x^1) + c2(x^2) + c3(x^3) + … = y - c0,
xকে সাধারণ হিসেবে নিচ্ছেন,
c1(x^0) + c2(x^1) + c3(x^2) + … = (y - c0)/x ….(2),
eq (1) এবং (2) থেকে আমরা সংখ্যাটিকে আবার উপস্থাপন করতে পারি এবং একটি সমাধান বিদ্যমান থাকার জন্য (y - Ci) x দ্বারা বিভাজ্য হওয়া উচিত এবং Ci তে কেবল -1, 0 এবং +1 থাকতে পারে।
সুতরাং অবশেষে আমাদের y>0 পর্যন্ত পরীক্ষা করতে হবে যে [(y-1) % x ==0] বা [(y) % x ==0] বা [(y+1) % x ==0] বা কিনা a সমাধান বিদ্যমান নেই৷
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main(){ int x = 2, y = 19; // checking y divisibility till y>0 while (y>0) { // If y-1 is divisible by x. if ((y - 1) % x == 0) y = (y - 1) / x; // If y is divisible by x. else if (y % x == 0) y = y / x; // If y+1 is divisible by x. else if ((y + 1) % x == 0) y = (y + 1) / x; // If no condition satisfies means // y cannot be represented in terms of power of x. else break; } if(y==0) cout<<"y can be represented in terms of the power of x."; else cout<<"y cannot be represented in terms of the power of x."; return 0; }
আউটপুট
y can be represented in terms of the power of x.
উপসংহার
এই টিউটোরিয়ালে, আমরা আলোচনা করেছি কিভাবে একটি সংখ্যার প্রতিনিধিত্ব অন্য সংখ্যার শক্তির পরিপ্রেক্ষিতে সম্ভব কিনা তা পরীক্ষা করা যায়। আমরা y দিয়ে বর্তমান, পূর্ববর্তী এবং পরবর্তী সংখ্যা বিভাজ্যতা যাচাই করে এই সমস্যাটি সমাধান করার জন্য একটি সহজ পদ্ধতি নিয়ে আলোচনা করেছি।
আমরা এই সমস্যার জন্য C++ প্রোগ্রাম নিয়েও আলোচনা করেছি যা আমরা সি, জাভা, পাইথন ইত্যাদি প্রোগ্রামিং ভাষার সাথে করতে পারি। আমরা আশা করি এই টিউটোরিয়ালটি আপনার কাজে লাগবে।