ধরুন আমাদের একটি সংখ্যা N আছে; আমাদেরকে N-এর গুণনীয়ক খুঁজে বের করতে হবে এবং শুধুমাত্র N-এর চারটি গুণনীয়কের গুণফল দিতে হবে যেমন −
-
চারটি ফ্যাক্টরের যোগফল N.
এর সমান -
চারটি কারণের গুণফল সর্বাধিক।
পণ্যটিকে সর্বাধিক করার জন্য চারটি কারণ একে অপরের সমান হতে পারে।
সুতরাং, যদি ইনপুটটি N =60 এর মত হয়, তাহলে আউটপুট হবে 50625 কারণ সমস্ত ফ্যাক্টর → 1 2 3 4 5 6 10 12 15 20 30 60 এবং তাদের পণ্য হল 50625, যেহেতু আমরা 15 কে চারবার নির্বাচিত করেছি। পণ্যকে সবচেয়ে বড় করুন।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
my_map :=একটি নতুন মানচিত্র
-
v :=একটি নতুন তালিকা, v1 :=একটি নতুন তালিকা
-
i এর জন্য রেঞ্জ 1 থেকে (n) + 1 এর বর্গমূলের সিলিং, do
-
যদি n mod i 0 এর মত হয়, তাহলে
-
v
এর শেষে i ঢোকান -
যদি i (n / i) এর পূর্ণসংখ্যা অংশের সমান না হয় এবং i 1 এর সমান না হয়, তাহলে
-
v
এর শেষে (n / i) এর পূর্ণসংখ্যা অংশ সন্নিবেশ করান
-
-
-
-
s :=v
এর আকার -
সর্বোচ্চ :=-1
-
map1 :=আকারের একটি অ্যারে (n + 5) এটি 0
দিয়ে পূরণ করুন -
0 থেকে s রেঞ্জের জন্য, করুন
-
i থেকে s রেঞ্জে j এর জন্য, do
-
যদি v[i] + v[j]
-
v1
-এর শেষে v[i] + v[j] ঢোকান -
মানচিত্র1[v[i] + v[j]] :=[v[i], v[j]]
-
my_map[v[i] + v[j]] :=1
-
-
-
-
s :=v1 এর আকার
-
0 থেকে s রেঞ্জের জন্য, করুন
-
উপাদান :=n - (v1[i])
-
যদি my_map এ উপাদান থাকে, তাহলে
-
a :=মানচিত্র1[v1[i], 0]
-
b :=মানচিত্র1[v1[i], 1]
-
c :=মানচিত্র1[n - v1[i], 0]
-
d :=মানচিত্র1[n - v1[i], 1]
-
সর্বোচ্চ :=সর্বোচ্চ a * b * c * d, সর্বোচ্চ
-
-
-
যদি সর্বোচ্চ -1 এর সমান হয়, তাহলে
-
প্রদর্শন করুন "সম্ভব নয়"
-
-
অন্যথায়,
-
প্রদর্শন সর্বোচ্চ
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from math import sqrt, ceil, floor def get_product(n): my_map = dict() v = [] v1 = [] for i in range(1,ceil(sqrt(n)) + 1): if (n % i == 0): v.append(i) if (i != (n // i) and i != 1): v.append(n // i) s = len(v) maximum = -1 map1 = [0]*(n + 5) for i in range(s): for j in range(i, s): if (v[i] + v[j] < n): v1.append(v[i] + v[j]) map1[v[i] + v[j]] =[v[i], v[j]] my_map[v[i] + v[j]] = 1 s = len(v1) for i in range(s): element = n - (v1[i]) if (element in my_map): a = map1[v1[i]][0] b = map1[v1[i]][1] c = map1[n - v1[i]][0] d = map1[n - v1[i]][1] maximum = max(a * b * c * d, maximum) if (maximum == -1): print("Not Possible") else : print("Maximum product", maximum) n = 60 get_product(n)
ইনপুট
60
আউটপুট
Maximum product 50625