দুটি পজিটিভ ইন্টিজার 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
ব্যাখ্যা: ১৭২৮ = ১২³ এবং ৭১৮২-এর পারমুটেশন।
অ্যালগরিদম
m-এর ঘাতগুলো ১০¹⁸ পর্যন্ত প্রিক্যালকুলেট করুন।- প্রতিটি ঘাতের ডিজিট সেট
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