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

โปรแกรมหาจำนวนคำตอบของสมการ 4 พารามิเตอร์ ใน Python

กำหนด a, b, c, d หาจำนวนคู่ (x, y) ที่ทำให้ x^2 + y^2 = (x*a) + (y*b) โดย x ใน [1, c] และ y ใน [1, d]

เช่น a=2, b=3, c=2, d=4 ผลลัพธ์คือ 1 คู่คือ (1, 1)

วิธีแก้ปัญหา

  • ans := 0
  • ลูป x จาก 1 ถึง c
    • l := x*(x-a)
    • det2 := b*b - 4*l
    • ถ้า det2 == 0 และ b เป็นคู่ และ 1 <= b/2 <= d: ans += 1; continue
    • ถ้า det2 > 0
      • det := int(sqrt(det2))
      • ถ้า det^2 == det2 และ (b+det) เป็นคู่
        • ถ้า 1 <= (b+det)/2 <= d: ans += 1
        • ถ้า 1 <= (b-det)/2 <= d: ans += 1
  • คืนค่า ans

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

def solve(a, b, c, d):
    ans = 0
    for x in range(1, c+1):
        l = x*(x-a)
        det2 = b*b - 4*l
        if det2 == 0 and b%2 == 0 and 1 <= b//2 <= d:
            ans += 1
            continue
        if det2 > 0:
            det = int(round(det2**0.5))
            if det*det == det2 and (b+det) % 2 == 0:
                if 1 <= (b+det)//2 <= d:
                    ans += 1
                if 1 <= (b-det)//2 <= d:
                    ans += 1
    return ans

a = 2
b = 3
c = 2
d = 4
print(solve(a, b, c, d))

Input

2, 3, 2, 4

Output

1