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

โปรแกรมแปลงจำนวนเต็มเป็นตัวเลขโรมันด้วย Python


คำอธิบายปัญหา

กำหนดตัวเลข num ให้แปลงเป็นตัวเลขโรมัน (Roman Numerals) ตัวเลขโรมันประกอบด้วยสัญลักษณ์และค่าดังนี้:

  • I = 1, V = 5, X = 10, L = 50
  • C = 100, D = 500, M = 1000

กฎการเขียน: เขียนจากค่ามากไปน้อย (ซ้ายไปขวา) และบวกค่าทั้งหมด แต่มีกรณีพิเศษที่สัญลักษณ์ค่าน้อยอยู่ซ้ายค่ามาก (การลบ): IV=4, IX=9, XL=40, XC=90, CD=400, CM=900

ขั้นตอนการแก้ปัญหา

  1. สร้างตารางคู่ (ค่า, สัญลักษณ์) เรียงจากมากไปน้อย รวมกรณีการลบด้วย
  2. วนลูปผ่านตาราง: หาร num ด้วยค่า (divmod) ได้ผลหาร d และเศษ m
  3. ต่อสัญลักษณ์ d ครั้ง เข้ากับผลลัพธ์ แล้วอัปเดต num = m
  4. ทำซ้ำจน num = 0

ตัวอย่าง

n = 1520 → MDXX (1000 + 500 + 10 + 10)

การตนการทำงาน (Python)

def solve(num):
    res = ""
    table = [
        (1000, "M"), (900, "CM"), (500, "D"), (400, "CD"),
        (100, "C"), (90, "XC"), (50, "L"), (40, "XL"),
        (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")
    ]
    for cap, roman in table:
        d, m = divmod(num, cap)
        res += roman * d
        num = m
    return res

num = 1520
print(solve(num))  # Output: MDXX

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

Input:  1520
Output: MDXX