বিভিন্ন আকারের মেটাল বার ট্রান্সপোর্ট করতে হবে। কন্টেইনারের দৈর্ঘ্য ছোট, শুধু দৈর্ঘ্য ১ এর বার ফিট হয়। nটি বার আছে, তাদের দৈর্ঘ্য দেওয়া আছে। সব বারের ইউনিট সাইজে কাটা হবে এবং কন্টেইনারে ফিট করা হবে (১ অপারেশন)। মোট কত অপারেশন লাগবে সেটা বের করতে হবে।
ইনপুট: [6, 3, 7] → আউটপুট: 22।
- দৈর্ঘ্য ৬ → ১০ অপারেশন
- দৈর্ঘ্য ৩ → ৪ অপারেশন
- দৈর্ঘ্য ৭ → ৮ অপারেশন

সমাধানের ধাপসমূহ (প্রাইম ফ্যাক্টরাইজেশন ভিত্তিক)
প্রাইম নাম্বার সিভ (১০⁶+১০০ পর্যন্ত)
প্রতিটি বার দৈর্ঘ্য value-এর জন্য:
- result += value
- value-এর প্রাইম ফ্যাক্টরগুলো বের করুন (f_list)
- f_list রিভার্স অর্ডারে: temp = 1; result += temp; temp *= prime_factor
result রিটার্ন করুন
উদাহরণ (Python)
from math import floor, sqrt
def prime_find(input_num):
prime_check = [True] * ((input_num - 1) // 2)
for p_num in range(3, floor(sqrt(input_num)) + 1, 2):
if prime_check[(p_num - 3) // 2]:
prime_check[(p_num**2 - 3) // 2 :: p_num] = [False] * ((input_num - p_num**2) // (2 * p_num) + 1)
return [2] + [2*i + 3 for i in range((input_num - 1) // 2) if prime_check[i]]
def solve(input_arr):
prime_nums = prime_find(10**6 + 100)
result = 0
for value in input_arr:
result += value
f_list = []
for p_num in prime_nums:
while value % p_num == 0:
f_list.append(p_num)
value //= p_num
if p_num**2 > value:
if value > 1:
f_list.append(value)
break
temp = 1
for p_num in f_list[::-1]:
result += temp
temp *= p_num
return result
if __name__ == "__main__":
print(solve([6, 3, 7]))
ইনপুট
[6, 3, 7]
আউটপুট
22