ขอถามเกี่ยวกับโจทย์นี้เป็นภาษาPythonครับ

โจทย์:เมื่อ Y ปีที่แล้วนายA แก่กว่านายB เป็นจำนวน M เท่า และปัจจุบันนายA แก่กว่านายB เป็นจำนวน N ปี ถามว่าตอนนี้ทั้งคู่อายุเท่าไร
input:จำนวนเต็ม 3 จำนวน N M Y
ผมลองงมๆทำดูแล้วแต่คำตอบออกมาไม่ถูกครับ อยากรู้ว่าผมเข้าใจโจทย์ผิดในส่วนไหนครับ
โค้ดที่ลองผมเขียน:
x = input()
y = x.split(' ')
n = int(y[0])
m = int(y[1])
y = int(y[2])
for i in range(1000):
    a = i
    for e in range(1000):
        b = e
        if a - y == (b - y) * m:
            if a - b == n:
                print(a, b)
                break
        else:
            continue
คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 3
กำลังงงว่าทำไมต้องใส่ loop

เมื่อ Y ปีที่แล้วนายA แก่กว่านายB เป็นจำนวน M เท่า
(A-Y)=M(B-Y)  --> 1

และปัจจุบันนายA แก่กว่านายB เป็นจำนวน N ปี
A-B=N --> 2

ถามว่าตอนนี้ทั้งคู่อายุเท่าไร
A=?, B=?

จาก 2  A=N-B
เอาไปแทนใน 1 ได้ N-B-Y=MB-MY
จัดรูปใหม่  MB+B = N-Y+MY
B = N-Y+MY/(M-1)
B = N+Y(M-1)/(M-1)
B = N/(M-1)+Y
ของ A ลองไปคิดเองแล้วกัน

ถ้าคุณทำแบบนี้ คุณไม่ต้องใช้ loop เลยด้วยซ้ำ จากโจทย์ของคุณมันจะเหลือแค่สมการง่าย ใส่เลขเข้าไปคิดออกเลย
แต่ไม่ใช่ว่าวิธีนี้จะไม่มีข้อเสียนะ
มันมี input นึงที่ทำให้ วิธีนี้ทำงานไม่ได้เลย ...... ลองหาดูเอาเองละกัน ..แต่ก็มีวิธีแก้อยู่


ส่วนที่ จขกท. ถาม Input:30 30 40
คำตอบมันมีครับ 71/41 ปีกว่าๆ
ถ้าคุณสังเกตุจากสมการนะ B = N/(M-1)+Y
นั่นคือ ถ้าคุณจะเอาคำตอบเป็นจำนวนเต็ม .... N ต้องถูกหารด้วย (M-1) ลงตัว
แต่ตัวอย่างของคุณมันไม่ลงตัว .... ดังนั้นคุณไม่มีทางได้คำตอบที่เป็นจำนวนเต็ม
แถมคุณไปวนลูปด้วยจำนวนเต็ม ..... วนยังไงมันก็หาคำตอบไม่เจอ

เอวัง
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่