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

โปรแกรมหาเลขสูงสุดจากการแทรกเลข 5 ที่ตำแหน่งใดก็ได้ใน Python

การหาเลขสูงสุดจากการแทรกหลัก 5

กำหนดจำนวนเต็ม n หาเลขสูงสุดที่ได้จากการแทรกหลัก 5 เข้าไปที่ตำแหน่งใดก็ได้หนึ่งตำแหน่ง

อัลกอริทึม

  1. ถ้า n > 0 (บวก): แปลงเป็นสตริง วนซ้ายไปขวา หาตำแหน่งแรกที่หลัก < 5 แทรก 5 ก่อนหน้านั้น
  2. ถ้า n < 0 (ลบ): ใช้ค่าสัมบูรณ์ วนซ้ายไปขวา หาตำแหน่งแรกที่หลัก > 5 แทรก 5 ก่อนหน้านั้น (ทำให้ค่าสัมบูรณ์น้อยลง → ค่าลบมากขึ้น)
  3. ถ้าไม่เจอตำแหน่ง ให้ต่อท้าย 5

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

def solve(n):
    if n > 0:
        s = str(n)
        k = ""
        c = False
        for i in s:
            if int(i) < 5 and c == False:
                k += "5" + i
                c = True
            else:
                k += i
        return int(k)
    else:
        k = ""
        s = str(abs(n))
        c = False
        for i in s:
            if int(i) > 5 and c == False:
                k += "5" + i
                c = True
            else:
                k += i
        if not c:
            k += "5"
        return int("-" + k)

n = 834
print(solve(n))

ผลลัพธ์

8534

คำอธิบาย

834 → หลักแรกที่ < 5 คือ 3 (ตำแหน่งที่ 2) → แทรก 5 ก่อน 3 → 8534

กรณีลบ: -834 → ค่าสัมบูรณ์ 834 หาหลัก > 5 คือ 8 → แทรก 5 ก่อน 8 → 5834 → -5834 (ค่าลบที่มากกว่า -8345)