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

পাইথনে একটি প্রদত্ত সমীকরণের মান বের করার প্রোগ্রাম

পাঁচটি পূর্ণসংখ্যা a, b, c, d, n দেওয়া আছে। ((a^b)^(c^d)) mod n এর মান বের করতে হবে। আউটপুট হবে একটি পূর্ণসংখ্যা।

ইনপুট a=2, b=3, c=2, d=4, n=10 হলে আউটপুট হবে ৬।

2^3 = 8
2^4 = 16
8^16 = 281474976710656
281474976710656 mod 10 = 6

সমাধানের ধাপসমূহ

  • helper() ফাংশন সংজ্ঞায়িত করুন। এটি n গ্রহণ করবে:
    • p := n, i := 2
    • i × i <= n 때까지:
      • যদি n mod i == 0 হয়, তবে p := p - floor(p / i)
      • n mod i == 0 থাকার동안: n := floor(n / i)
      • যদি i != 2 হয়, তবে i := i + 2, অন্যথায় i := i + 1
    • যদি n > 1 হয়, তবে p := p - floor(p / n)
    • p ফেরত দিন
  • যদি b == 0 বা (c == 0 এবং d != 0) হয়, তবে (a^0) mod n ফেরত দিন
  • যদি c == 1 বা d == 0 হয়, তবে (a^b) mod n ফেরত দিন
  • যদি a == 0 বা a mod n == 0 হয়, তবে 0 ফেরত দিন
  • যদি d == 1 হয়, তবে (a^(b×c)) mod n ফেরত দিন
  • p := helper(n)
  • e := (c^d) mod p + p
  • (((a^b) mod n)^e) mod n ফেরত দিন

উদাহরণ

def helper(n):
    p = n
    i = 2
    while i * i <= n:
        if n % i == 0:
            p -= p // i
        while n % i == 0:
            n = n // i
        if i != 2:
            i += 2
        else:
            i += 1
    if n > 1:
        p -= p // n
    return p

def solve(a, b, c, d, n):
    if b == 0 or (c == 0 and d != 0):
        return pow(a, 0, n)
    if c == 1 or d == 0:
        return pow(a, b, n)
    if a == 0 or a % n == 0:
        return 0
    if d == 1:
        return pow(a, b * c, n)
    p = helper(n)
    e = pow(c, d, p) + p
    return pow(pow(a, b, n), e, n)

print(solve(2, 3, 2, 4, 10))

ইনপুট

2, 3, 2, 4, 10

আউটপুট

6
  1. পাইথনে বাইনারি ট্রি-তে BST-এর সর্বোচ্চ যোগফলের মান বের করার প্রোগ্রাম

  2. পাইথনে গ্রাফ সবাই দ্বারা ট্রাভার্সেবল কিনা চেক করার প্রোগ্রাম

  3. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করার প্রোগ্রাম

  4. পাইথনে সমীকরণ a + b = c থেকে অনুপস্থিত মান বের করুন