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

পাইথনে N-এর যেকোনো পারমুটেশন K-এর যেকোনো ঘাতের সমান কিনা

দুটি পজিটিভ ইন্টিজার n ও m দেওয়া আছে (২ ≤ n ≤ 10¹⁸, ২ ≤ m ≤ n)। n-এর সব ডিজিট পারমুটেশন থেকে যেকোনোটি কি m-এর কোনো ঘাতের সমান তা যাচাই করতে হবে।

উদাহরণ

ইনপুট: n = 7182, m = 12

আউটপুট: An all digit-permutation of n is equal to a power of m

ব্যাখ্যা: ১৭২৮ = ১২³ এবং ৭১৮২-এর পারমুটেশন।

অ্যালগরিদম

  1. m-এর ঘাতগুলো ১০¹⁸ পর্যন্ত প্রিক্যালকুলেট করুন।
  2. প্রতিটি ঘাতের ডিজিট সেট n-এর ডিজিট সেটের সাথে মিলিয়ে দেখুন।

উদাহরণ কোড

def check_power(n, m):
    temp_arr_1 = []
    temp_arr_2 = []
    while n > 0:
        temp_arr_1.append(n % 10)
        n //= 10
    while m > 0:
        temp_arr_2.append(m % 10)
        m //= 10
    return set(temp_arr_1) == set(temp_arr_2)

def solve(n, m):
    power_array = [0] * 100
    max_range = 10**18
    power_array[0] = m
    i = 1
    while power_array[i-1] * m < max_range:
        power_array[i] = power_array[i-1] * m
        i += 1
    for j in range(i):
        if check_power(n, power_array[j]):
            return "An all digit-permutation of n is equal to a power of m"
    return "No all digit-permutation of n is equal to a power of m"

n, m = 7182, 12
print(solve(n, m))

ইনপুট

7182, 12

আউটপুট

An all digit-permutation of n is equal to a power of m
  1. পাইথন - ডিকশনারি খালি কিনা যাচাই করা

  2. পাইথনে ভেরিয়েবল স্ট্রিং কিনা যাচাই করা

  3. পাইথনে नेक्स्ट পারমুটেশন

  4. পাইথনে পাওয়ার অফ থ্রি যাচাই