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

পাইথনে N কে 1 এ রিডিউস করার সর্বোচ্চ অপারেশন সংখ্যা বের করা

ধরা যাক দুটি সংখ্যা P এবং Q আছে যারা N = P!/Q! তৈরি করে। আমাদের N কে 1 এ রিডিউস করতে হবে সর্বোচ্চ অপারেশন দিয়ে। প্রতিটি অপারেশনে N কে N/X দিয়ে রিপ্লেস করা যায় যদি N, X দিয়ে বিভাজ্য হয়। সর্বোচ্চ অপারেশন সংখ্যা রিটার্ন করুন।

যেমন, A=7, B=4 হলে N=210, ডিভাইসর: 2,3,5,7 → আউটপুট 4।

সমাধানের ধাপসমূহ (সieve-রূপে প্রাইম ফ্যাক্টর গণনা)

  • N := 1000005, factors[N] := 0 দিয়ে ভরুন
  • for i in 2..N: if factors[i]==0: for j in i..N step i: factors[j] = factors[j//i] + 1
  • for i in 1..N: factors[i] += factors[i-1] (প্রিফিক্স সম)
  • উত্তর = factors[a] - factors[b]

উদাহরণ

N = 1000005
factors = [0] * N
def get_prime_facts():
    for i in range(2, N):
        if factors[i] == 0:
            for j in range(i, N, i):
                factors[j] = factors[j // i] + 1
    for i in range(1, N):
        factors[i] += factors[i - 1]
get_prime_facts()
a = 7
b = 4
print(factors[a] - factors[b])

ইনপুট

7,4

আউটপুট

4
  1. C++-এ N কে ১ করে কমাতে সর্বোচ্চ অপারেশন সংখ্যা (N = P!/Q!)

  2. পাইথনে kটি একই দৈর্ঘ্যের রিবন বানাতে সর্বোচ্চ দৈর্ঘ্য বের করার প্রোগ্রাম

  3. পাইথনে সর্বোচ্চ k নেগেট অপারেশন দিয়ে অ্যারের সর্বোচ্চ যোগফল বের করার প্রোগ্রাম

  4. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম