কম্পিউটার

একটি সংখ্যার কোনো স্থানান্তর 3 দ্বারা বিভাজ্য এবং পাইথনে প্যালিনড্রোমিক কিনা তা পরীক্ষা করুন


ধরুন, আমাদের একটি বড় ধনাত্মক পূর্ণসংখ্যা N প্রদান করা হয়েছে। আমাদের পরীক্ষা করতে হবে যে আমরা এর সংখ্যা-ক্রমানুবর্তন থেকে একটি সংখ্যা বের করতে পারি কিনা; যাতে স্থানচ্যুতি তার বিপরীত রূপের সমান, অর্থাৎ এর প্যালিনড্রোম, এবং এটি 3 দ্বারা বিভাজ্য।

উদাহরণস্বরূপ, ধরুন আমাদের সংখ্যাটি 132213 আছে। যদি আমরা সংখ্যার অঙ্কগুলি থেকে স্থানান্তরগুলি পরীক্ষা করি, তাহলে আমরা 123321 পাব যা একটি প্যালিনড্রোম এবং এটি 3 দ্বারা বিভাজ্যও। ইনপুট নম্বর থেকে কোনো পারমুটেশন সম্ভব কিনা তা আমাদের পরীক্ষা করতে হবে। উপরের শর্তগুলো পূরণ করুন।

সুতরাং, যদি ইনপুটটি হয়:input_num =132213, তাহলে আউটপুট হবে "এক বা একাধিক স্থানান্তর একটি প্যালিনড্রোম এবং তিনটি দ্বারা বিভাজ্য"।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ডিজিট_অ্যারে :=0s দিয়ে শুরু করা 10 আকারের একটি নতুন তালিকা
  • input_sum :=0
  • যদিও ইনপুট_সংখ্যা শূন্য নয়, কর
    • input_sum :=input_sum + (input_num mod 10)
    • digit_array[input_num mod 10] :=digit_array[input_num mod 10] + 1
    • input_num :=(input_num / 10) এর ফ্লোর মান
  • যদি input_sum mod 3 0 এর মত না হয়, তাহলে
    • মিথ্যে ফেরত দিন
  • index_odd :=0
  • আমি 0 থেকে 9 রেঞ্জের জন্য, কর
    • যদি digit_array[i] mod 2 0 এর মত না হয়, তাহলে
      • index_odd :=index_odd + 1
  • যদি index_odd> 1 হয়, তারপর
    • রিটার্ন "কোন পারমুটেশন একটি প্যালিনড্রোম নয় এবং এটি তিনটি দ্বারা বিভাজ্য"
  • অন্যথায়,
    • রিটার্ন "এক বা একাধিক স্থানচ্যুতি একটি প্যালিনড্রোম এবং তিনটি দ্বারা বিভাজ্য"

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

def solve(input_num):
   digit_array = [0] * 10
   input_sum = 0
   while (input_num) :
      input_sum += input_num % 10 digit_array[input_num % 10] += 1
      input_num //= 10
   if (input_sum % 3 != 0):
      return False
   index_odd = 0
   for i in range(10) :
      if (digit_array[i] % 2 != 0):
         index_odd += 1
   if (index_odd > 1):
      return "No permutation is a palindrome and is divisible by three"
   else:
      return "One or more permutation is a palindrome and is divisible by three"
input_num = 132213
print(solve(input_num))

ইনপুট

132213

আউটপুট

One or more permutation is a palindrome and is divisible by three

  1. পাইথনে একটি সংখ্যা একটি ট্রোজান নম্বর কিনা তা পরীক্ষা করুন

  2. প্রাইম নম্বর চেক করতে পাইথন প্রোগ্রাম

  3. আর্মস্ট্রং নম্বর চেক করতে পাইথন প্রোগ্রাম

  4. Python এ পারমুটেশন এবং কম্বিনেশন?