কম্পিউটার টিউটোরিয়াল

মেটাল বার কন্টেইনারে প্যাক করার অপারেশন সংখ্যা বের করা

বিভিন্ন আকারের মেটাল বার ট্রান্সপোর্ট করতে হবে। কন্টেইনারের দৈর্ঘ্য ছোট, শুধু দৈর্ঘ্য ১ এর বার ফিট হয়। 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
  1. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে ছোট সংখ্যা বের করা

  2. পাইথন প্রোগ্রাম ডিকশনারিতে দ্বিতীয় সর্বোচ্চ মান বের করা

  3. পাইথন প্রোগ্রাম লিস্টে দ্বিতীয় সর্বোচ্চ সংখ্যা বের করা

  4. পাইথন প্রোগ্রাম লিস্টে সবচেয়ে বড় সংখ্যা বের করা