ধরুন আমাদের দুটি পূর্ণসংখ্যা n এবং k আছে। আমাদের x এর সর্বোচ্চ মান বের করতে হবে, যেমন n! mod (k^x) =0। সুতরাং যখন n =5, এবং k =2, তখন আউটপুট হবে 3। n হিসাবে! =120, এখন x এর বিভিন্ন মানের জন্য, এটি হবে −
120 মোড 2^0 =0, 120 মোড 2^1 =0, 120 মোড 2^2 =0, 120 মোড 2^3 =0, 120 মোড 2^4 =8, 120 মোড 2^5 =24, 120 মোড 2^6 =56, 120 মোড 2^7 =120। x =3 এর সর্বাধিক মান হিসাবে ফলাফলটি 0, তাই আউটপুট 3।
এটি সমাধান করার জন্য, আমাদের এই পদক্ষেপগুলি অনুসরণ করতে হবে -
- k এর বর্গমূল নিন, এবং এটিকে m এ সংরক্ষণ করুন
- এর জন্য i :=2 থেকে m, নিম্নলিখিত ধাপগুলি করুন:
- যখন i =m, তারপর i :=k সেট করুন
- যদি k i দ্বারা বিভাজ্য হয়, তাহলে, k কে i দ্বারা ভাগ করুন
- n এ একটি লুপ চালান এবং u নামক একটি চলকের ভাগফল যোগ করুন।
- প্রতিটি লুপের পরে r-এর সর্বনিম্ন মান সংরক্ষণ করুন
উদাহরণ
#include <iostream> #include <cmath> using namespace std; int calculateMaxX(int n, int k) { int result = n, v, u; int m = sqrt(k) + 1; for (int i = 2; i <= m && k > 1; i++) { if (i == m) { i = k; } for (u = v = 0; k % i == 0; v++) { k /= i; } if (v > 0) { int t = n; while (t > 0) { t /= i; u += t; } result = min(result, u / v); } } return result; } int main() { int n = 5; int k = 2; cout<<"Maximum value of x is: " << calculateMaxX(n, k); }
আউটপুট
Maximum value of x is: 3