ধরুন আমাদের দুটি ধনাত্মক মান n এবং k আছে। এখন বিবেচনা করুন আমাদের কাছে n-এর সমস্ত গুণনীয়কের একটি তালিকা রয়েছে যা আরোহী ক্রমে সাজানো হয়েছে, আমাদের এই তালিকায় kth ফ্যাক্টর খুঁজে বের করতে হবে। k ফ্যাক্টর কম হলে -1 ফেরত দিন।
সুতরাং, যদি ইনপুটটি n =28 k =4 এর মত হয়, তাহলে আউটপুট হবে 7 কারণ, 28 এর ফ্যাক্টর হল [1,2,4,7,14,28], চতুর্থটি হল 7।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
k যদি 1 এর মত হয়, তাহলে
-
রিটার্ন 1
-
-
cand :=একটি উপাদান সহ একটি তালিকা [1]
-
i এর জন্য 2 থেকে 1 + ফ্লোর এর (n এর বর্গমূল), করুন
-
যদি n mod i 0 এর মত হয়, তাহলে
-
ক্যান্ডের শেষে i ঢোকান
-
-
m :=ক্যান্ডের আকার
-
-
যদি k> 2*m বা (k একই হয় 2*m এবং n =(ক্যান্ডের শেষ উপাদান)^2)
-
রিটার্ন -1
-
-
যদি k <=m, তাহলে
-
রিটার্ন ক্যান্ড[k-1]
-
-
ফ্যাক্টর :=cand[2*m - k]
-
n/ফ্যাক্টর
এর রিটার্ন ভাগফল
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
from math import floor def solve(n ,k): if k == 1: return 1 cand = [1] for i in range(2, 1+floor(pow(n, 0.5))): if n%i == 0: cand.append(i) m = len(cand) if k > 2*m or (k == 2*m and n == cand[-1]**2): return -1 if k <= m: return cand[k-1] factor = cand[2*m - k] return n//factor n = 28 k = 4 print(solve(n ,k))
ইনপুট
28, 4
আউটপুট
7