ধরুন, আমাদের দুটি ধনাত্মক পূর্ণসংখ্যা n এবং m আছে, যেমন 2 ≤ n ≤ 1018 এবং 2 ≤ m ≤ n। আমাদের লক্ষ্য হল n সংখ্যার কোনো অল-ডিজিট-পারমুটেশন আছে কিনা তা খুঁজে বের করা; যাতে এটি m এর কিছু শক্তির সমান হয়। যদি একটি থাকে, আমরা বলি যে n-এর একটি অল-ডিজিট-পারমুটেশন আছে যা m-এর ঘাতের সমান, অন্যথায় আমরা পূর্ববর্তী বিবৃতিটিকে মিথ্যা বলে বর্ণনা করি।
উদাহরণস্বরূপ, আমাদের দেওয়া হয়েছে n =7182 এবং m =12। যেহেতু 1728 হল 7182 এবং 1728 =12^3 এর একটি সর্ব-সংখ্যা-ক্রমানুবর্তন, আমরা বলি যে n-এর একটি অল-ডিজিট-পারমুটেশন m এর ঘাতের সমান। .
সুতরাং, যদি ইনপুট হয় n=7182, m =12; তাহলে আউটপুট হবে "n-এর সমস্ত অঙ্ক-ক্রমানুবর্তন m-এর শক্তির সমান"।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন check_power()। এটি n, m
- লাগবে
- temp_arr_1 :=একটি নতুন তালিকা
- temp_arr_2 :=একটি নতুন তালিকা
- যখন n> 0, do
- temp_arr_1 এর শেষে (n mod 10) সন্নিবেশ করুন
- n :=n / 10 এর ফ্লোর মান
- যখন m> 0, do
- temp_arr_2 এর শেষে সন্নিবেশ করুন (m mod 10)
- m :=m / 10 এর ফ্লোর মান
- যদি temp_arr_1 থেকে একটি নতুন সেট temp_arr_2 এর একটি নতুন সেটের মতো হয়, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- পাওয়ার_অ্যারে :=0s দিয়ে শুরু করা 100 আকারের একটি নতুন তালিকা।
- সর্বোচ্চ_পরিসীমা :=10^18
- পাওয়ার_অ্যারে[0] :=m
- i :=1
- যখন (power_array[i - 1] * m)
- power_array[i] :=power_array[i - 1] * m
- i :=i + 1
- যদি check_power(n, power_array[j]) True হয়, তাহলে
- প্রত্যাবর্তন "n-এর সমস্ত অঙ্ক-ক্রমানুবর্তন m এর ঘাতের সমান"
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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 if (set(temp_arr_1) == set(temp_arr_2)): return True return False def solve(n, m): power_array = [0] * 100 max_range = pow(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