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

ตรวจสอบว่าผลคูณของหลักที่อยู่ตำแหน่งคู่ หารด้วยผลรวมของหลักที่อยู่ตำแหน่งคี่ลงตัวหรือไม่ ใน Python


ปัญหา

ให้ตัวเลข n ต้องการตรวจสอบว่าผลคูณของหลักที่อยู่ตำแหน่งคู่ (นับจากขวาไปซ้าย ตำแหน่ง 1 คือหลักหน่วย) หารด้วยผลรวมของหลักที่อยู่ตำแหน่งคี่ลงตัวหรือไม่

ตัวอย่าง

n = 59361 → ผลลัพธ์คือ True เนื่องจาก (1×3×5) = 15 และ (6+9) = 15 → 15 หาร 15 ลงตัว

แนวคิดการแก้ปัญหา

  1. นับจำนวนหลักของ n (ใช้ log10 หรือแปลงเป็นสตริง)
  2. กำหนดตัวแปร total = 0 (สำหรับผลรวมตำแหน่งคี่) และ prod = 1 (สำหรับผลคูณตำแหน่งคู่)
  3. วนลูปดึงหลักทีละหลักจากขวาไปซ้าย:
    • ถ้าตำแหน่งปัจจุบันเป็นเลขคู่ → คูณ prod กับหลักนั้น
    • ถ้าเป็นเลขคี่ → บวกหลักนั้นเข้า total
    • ตัดหลักสุดท้ายออก (n //= 10) และลดนับตำแหน่ง
  4. ตรวจสอบว่า prod % total == 0 ถ้าใช่คืนค่า True มิฉะนั้น False

โค้ดตัวอย่าง

from math import log10

def solve(n):
    digit_count = int(log10(n)) + 1
    total = 0
    prod = 1
    while n > 0:
        if digit_count % 2 == 0:
            prod *= n % 10
        else:
            total += n % 10
        n //= 10
        digit_count -= 1
    return prod % total == 0

n = 59361
print(solve(n))  # True

อินพุต / เอาต์พุต

Input:  59361
Output: True