สมมติว่าเราได้รับจำนวนมหาศาลและเราต้องค้นหาว่าการเรียงสับเปลี่ยนของตัวเลขนั้นหารด้วย 8 ลงตัวหรือไม่ ตัวเลขนั้นให้เราในรูปแบบสตริง
ดังนั้น หากอินพุตมีลักษณะดังนี้:input_num =4696984 ผลลัพธ์จะเป็น “หารด้วยแปด”
เพื่อแก้ปัญหานี้ เราจะตรวจสอบการเรียงสับเปลี่ยนสามหลักทั้งหมดที่เป็นไปได้ด้วยตัวเลขของตัวเลขนั้น และดูว่าสามารถเกิดขึ้นได้ในการเรียงสับเปลี่ยนตัวเลขทั้งหมดหรือไม่ หากการเรียงสับเปลี่ยนสามหลักหารด้วยแปดลงตัวเกิดขึ้นที่ส่วนท้ายของการเรียงสับเปลี่ยนของตัวเลขทั้งหมด เราจะบอกว่าการเรียงสับเปลี่ยนนั้นหารด้วย 8 ลงตัว
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าความยาวของ input_num <3 แล้ว
- ถ้า input_num mod 8 เหมือนกับ 0 แล้ว
- คืนค่า True
- input_num :=ย้อนกลับของ input_num
- ถ้า input_num mod 8 เหมือนกับ 0 แล้ว
- คืนค่า True
- คืนค่าเท็จ
- ถ้า input_num mod 8 เหมือนกับ 0 แล้ว
- 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