এই সমস্যায়, আমাদের একটি সংখ্যা দেওয়া হয়েছে। আমাদের কাজ হল একটি সংখ্যার পঞ্চম মূলের তল মান খুঁজে বের করা।
পঞ্চম রুট একটি সংখ্যা হল সেই সংখ্যা যাকে 5 বার গুণ করলে সংখ্যাটি ফেরত আসে৷
যদি N 1/5 =a তারপর, a*a*a*a*a =N .
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: N =325
আউটপুট: 3
ব্যাখ্যা:
325-এর পঞ্চম মূল হল 3.179 যার তল মান হল 3।
সমাধান পদ্ধতি:
সমস্যার একটি সহজ সমাধান হল 1 থেকে n পর্যন্ত যাত্রা করা। এবং সেই সংখ্যাটি খুঁজে বের করা যা নিজের সাথে পাঁচ গুণ করলে সংখ্যাটি পাওয়া যায়।
এখানে, সঠিক মান পাওয়া যাবে না কারণ সংখ্যাগুলি সর্বদা নিখুঁত পঞ্চম শক্তি হবে না। সুতরাং, আমরা প্রথম মানটি খুঁজে পাব যা পঞ্চম শক্তিকে n-এর চেয়ে বেশি করে এবং তারপর ফ্লোর পঞ্চম মূল পেতে মান -1 ফেরত দিব।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include<iostream> using namespace std; int calcFifthRoot(int n) { if (n == 0 || n == 1) return n; int a = 0; for(a = 1; a*a*a*a*a < n ; a++){ } return (a - 1); } int main() { int n = 325; cout<<"The Floor of fifth root of "<<n<<" is "<<calcFifthRoot(n); return 0; }
আউটপুট −
The Floor of fifth root of 325 is 3
এই অ্যালগরিদমটি ভাল তবে সমস্যাটির আরও প্রতিশ্রুতিবদ্ধ সমাধান হতে পারে। এটি অনুসন্ধান অ্যালগরিদম আপডেট করে এবং বাইনারী অনুসন্ধান ব্যবহার করে করা যেতে পারে অ্যালগরিদম সংখ্যার পঞ্চম মূল অনুসন্ধানের জন্য।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include<iostream> using namespace std; int calcFifthRoot(int n) { if (n == 0 || n == 1) return n; int start = 1, end = n, root = 0; while (start <= end) { int a = (start + end) / 2; long int apowfive = a*a*a*a*a; if (apowfive == n) return a; if (apowfive < n) { start = a + 1; root = a; } else end = a - 1; } return root; } int main() { int n = 250; cout<<"The floor of fifth root of "<<n<<" is "<<calcFifthRoot(n); return 0; }
আউটপুট −
The floor of fifth root of 250 is 3