Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าการเรียงสับเปลี่ยนของจำนวนมากหารด้วย 8 ใน Python . ลงตัวหรือไม่


สมมติว่าเราได้รับจำนวนมหาศาลและเราต้องค้นหาว่าการเรียงสับเปลี่ยนของตัวเลขนั้นหารด้วย 8 ลงตัวหรือไม่ ตัวเลขนั้นให้เราในรูปแบบสตริง

ดังนั้น หากอินพุตมีลักษณะดังนี้:input_num =4696984 ผลลัพธ์จะเป็น “หารด้วยแปด”

เพื่อแก้ปัญหานี้ เราจะตรวจสอบการเรียงสับเปลี่ยนสามหลักทั้งหมดที่เป็นไปได้ด้วยตัวเลขของตัวเลขนั้น และดูว่าสามารถเกิดขึ้นได้ในการเรียงสับเปลี่ยนตัวเลขทั้งหมดหรือไม่ หากการเรียงสับเปลี่ยนสามหลักหารด้วยแปดลงตัวเกิดขึ้นที่ส่วนท้ายของการเรียงสับเปลี่ยนของตัวเลขทั้งหมด เราจะบอกว่าการเรียงสับเปลี่ยนนั้นหารด้วย 8 ลงตัว

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้าความยาวของ input_num <3 แล้ว
    • ถ้า input_num mod 8 เหมือนกับ 0 แล้ว
      • คืนค่า True
    • input_num :=ย้อนกลับของ input_num
    • ถ้า input_num mod 8 เหมือนกับ 0 แล้ว
      • คืนค่า True
    • คืนค่าเท็จ
  • temp_arr :=รายการใหม่ของขนาด 10 เริ่มต้นโดย 0 วินาที
  • สำหรับการนับในช่วง 0 ถึงขนาดของ input_num ให้ทำ
  • temp_arr[input_num[count] - 0] :=temp_arr[input_num[count] - 0] + 1
  • สำหรับการนับในช่วง 104 ถึง 999 เพิ่มขึ้น 8 ทำ
    • อุณหภูมิ :=นับ
    • เหตุการณ์ :=รายการใหม่ของขนาด 10 เริ่มต้นโดย 0 วินาที
    • เหตุการณ์[ชั่วคราว mod 10] :=เหตุการณ์[temp mod 10] + 1
    • อุณหภูมิ :=อุณหภูมิ / 10
    • เหตุการณ์[ชั่วคราว mod 10] :=เหตุการณ์[temp mod 10] + 1
    • อุณหภูมิ :=อุณหภูมิ / 10
    • เหตุการณ์[ชั่วคราว mod 10] :=เหตุการณ์[temp mod 10] + 1
    • อุณหภูมิ :=นับ
    • ถ้าเกิดขึ้น[temp mod 10]> temp_arr[temp mod 10] แล้ว
      • ติดตามตอนต่อไป
    • อุณหภูมิ :=อุณหภูมิ / 10
    • ถ้าเกิดขึ้น[temp mod 10]> temp_arr[temp mod 10] แล้ว
      • ติดตามตอนต่อไป
    • อุณหภูมิ :=อุณหภูมิ / 10
    • ถ้าเกิดขึ้น[temp mod 10]> temp_arr[temp mod 10] แล้ว
      • ติดตามตอนต่อไป
    • คืนค่า True
  • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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