ধরুন আমাদের একটি সংখ্যা pf মৌলিক গুণনীয়ক সংখ্যা প্রতিনিধিত্ব করে. আমাদের একটি ধনাত্মক সংখ্যা n করতে হবে যা নিম্নলিখিত শর্তগুলি পূরণ করে −
-
n এর মৌলিক গুণনীয়ক সংখ্যা (স্বতন্ত্র হতে পারে বা নাও হতে পারে) সর্বাধিক pf।
-
n এর চমৎকার ভাজকের সংখ্যা সর্বাধিক করা হয়েছে। আমরা জানি যে n-এর একটি ভাজক চমৎকার যখন এটি n-এর প্রতিটি মৌলিক গুণনীয়ক দ্বারা বিভাজ্য হয়।
আমাদের n এর চমৎকার ভাজকের সংখ্যা বের করতে হবে। যদি উত্তরটি খুব বড় হয় তাহলে ফলাফল মডিউল 10^9 + 7 ফেরত দিন।
সুতরাং, যদি ইনপুটটি pf =5 এর মত হয়, তাহলে আউটপুট হবে 6 কারণ n =200 এর জন্য আমাদের প্রাইম ফ্যাক্টর [2,2,2,5,5] আছে এবং এর চমৎকার ভাজক হল [10,20,40,50,100,200 ] তাই ৬টি ভাজক।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি pf 1 এর মত হয়, তাহলে
-
রিটার্ন 1
-
-
m :=10^9 + 7
-
q :=pf/3 এর ভাগফল, r :=pf মোড 3
-
যদি r 0 এর সমান হয়, তাহলে
-
3^q mod m
ফেরত দিন
-
-
অন্যথায় যখন r 1 এর মত হয়, তখন
-
রিটার্ন (3^(q-1) mod m)*4 mod m
-
-
অন্যথায়,
-
রিটার্ন (3^q mod m)*2 mod m
-
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(pf):
if pf == 1:
return 1
m = 10** 9 + 7
q, r = divmod(pf, 3)
if r == 0:
return pow(3, q, m)
elif r == 1:
return pow(3, q-1, m) * 4 % m
else:
return pow(3, q, m) * 2 % m
pf = 5
print(solve(pf)) ইনপুট
5
আউটপুট
6