কম্পিউটার

পাইথনে 8 দ্বারা বিভাজ্য বৃহৎ সংখ্যার কোনো স্থানান্তর পরীক্ষা করুন


ধরুন, আমাদের একটি বিশাল সংখ্যা প্রদান করা হয়েছে এবং আমাদের খুঁজে বের করতে হবে যে সংখ্যাটির সংখ্যাগুলির কোন স্থানান্তর 8 দ্বারা বিভাজ্য কিনা৷ সংখ্যাটি আমাদের স্ট্রিং বিন্যাসে দেওয়া হয়েছে৷

সুতরাং, যদি ইনপুটটি হয়:input_num =4696984, তাহলে আউটপুট হবে "আট দ্বারা বিভাজ্য"৷

এই সমস্যাটি সমাধান করার জন্য, আমরা সংখ্যার অঙ্কগুলির সাথে সম্ভাব্য সমস্ত তিন-অঙ্কের স্থানান্তরগুলি পরীক্ষা করব এবং দেখব যে সেগুলি সংখ্যার সমস্ত-অঙ্কের স্থানান্তরে ঘটতে পারে কিনা। সংখ্যার একটি অল-ডিজিটের পারমুটেশনের শেষে যদি আট দ্বারা বিভাজ্য একটি তিন-অঙ্কের স্থানান্তর ঘটে, আমরা বলব যে ক্রমক্রম 8 দ্বারা বিভাজ্য৷

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

  • যদি ইনপুট_সংখ্যার দৈর্ঘ্য <3 ​​হয়, তাহলে
    • যদি input_num mod 8 0 এর মত হয়, তাহলে
      • সত্য ফেরান
    • input_num :=input_num এর বিপরীত
    • যদি input_num mod 8 0 এর মত হয়, তাহলে
      • সত্য ফেরান
    • মিথ্যে ফেরত দিন
  • temp_arr :=0s দ্বারা আরম্ভ করা 10 আকারের একটি নতুন তালিকা।
  • পরিসীমা 0 থেকে input_num এর আকারে গণনার জন্য, করুন
  • temp_arr[input_num[count] - 0] :=temp_arr[input_num[count] - 0] + 1
  • 104 থেকে 999 রেঞ্জে গণনার জন্য, 8 দ্বারা বৃদ্ধি করুন, করুন
    • তাপ :=গণনা
    • ঘটনা :=0s দ্বারা আরম্ভ করা 10 আকারের একটি নতুন তালিকা।
    • ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
    • temp :=temp / 10
    • ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
    • temp :=temp / 10
    • ঘটনা [temp 10] :=সংঘটন [temp 10] + 1
    • তাপ :=গণনা
    • যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
      • পরবর্তী পুনরাবৃত্তির জন্য যান
    • temp :=temp / 10
    • যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
      • পরবর্তী পুনরাবৃত্তির জন্য যান
    • temp :=temp / 10
    • যদি ঘটনা ঘটে [temp mod 10]> temp_arr[temp mod 10], তারপর
      • পরবর্তী পুনরাবৃত্তির জন্য যান
    • সত্য ফেরান
  • মিথ্যে ফেরত দিন

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

উদাহরণ

def solve(input_num):
   if len(input_num) < 3:
      if int(input_num) % 8 == 0:
         return True
      input_num = input_num[::-1]
      if int(input_num) % 8 == 0:
         return True
      return False
   temp_arr = 10 * [0]
   for count in range(0, len(input_num)):
      temp_arr[int(input_num[count]) - 0] += 1
   for count in range(104, 1000, 8):
      temp = count
      occurences = 10 * [0]
      occurences[int(temp % 10)] += 1
      temp = temp / 10
      occurences[int(temp % 10)] += 1
      temp = temp / 10
      occurences[int(temp % 10)] += 1
      temp = count
      if (occurences[int(temp % 10)] >
         temp_arr[int(temp % 10)]):
         continue
      temp = temp / 10
      if (occurences[int(temp % 10)] >
         temp_arr[int(temp % 10)]):
         continue
      temp = temp / 10
      if (occurences[int(temp % 10)] >
         temp_arr[int(temp % 10)]):
         continue
         return True
      return False
if solve("4696984"):
   print("Divisible by eight")
else:
   print("Not divisible by eight")

ইনপুট

4696984

আউটপুট

Divisible by eight

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

  2. পাইথনে কোন বড় সংখ্যা 19 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  3. পাইথনে কোন বড় সংখ্যা 17 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করুন

  4. পাইথনে একটি সংখ্যা একটি অ্যাকিলিস নম্বর কিনা তা পরীক্ষা করুন