สมมติว่าเราได้รับสองจุด (p1, q1) และ (p2, q2) เราต้องหาจำนวนของพิกัดเชิงปริพันธ์ (ทั้งค่า x และ y เป็นจำนวนเต็ม) หากมีการลากเส้นตรงระหว่างจุดสองจุดที่กำหนด คืนจำนวนแต้มแล้ว
ดังนั้น หากอินพุตเป็น p1 =3, q1 =3, p2 =6, q2 =6 แล้วผลลัพธ์จะเป็น 2 หากเราลากเส้นตรง เราจะเห็นว่าจุด (5,5) และ (6 ,6) อยู่บนเส้นตรง
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- กำหนดฟังก์ชัน gcd_find() นี่จะใช้เวลา x,y
- ถ้า y เท่ากับ 0 แล้ว
- ผลตอบแทน x
- ส่งคืน gcd_find(y, x mod y)
- ถ้า y เท่ากับ 0 แล้ว
จากวิธีการ/ฟังก์ชันหลัก ให้ทำดังนี้ −
- ส่งคืน gcd_find(|p2 - p1| , |q2 - q1|) - 1
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def gcd_find(x,y): if y == 0: return x return gcd_find(y,x % y) def solve(p1,q1,p2,q2): return gcd_find(abs(p2 - p1),abs(q2 - q1)) - 1 print(solve(3,3,6,6))
อินพุต
3,3,6,6
ผลลัพธ์
2