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

โปรแกรมหาจำนวนคำตอบสำหรับสมการที่กำหนดด้วยพารามิเตอร์สี่ตัวใน 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)

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตอบ :=0
  • สำหรับ x ในช่วง 1 ถึง c ให้ทำ
    • l :=x*(x-a)
    • det2 :=b*b - 4*l
    • ถ้า det2 เหมือนกับ 0 และ b เป็นคู่และ 1 <=ชั้นของ (b/2) <=d แล้ว
      • อัน :=ans + 1
      • ติดตามตอนต่อไป
    • ถ้า det2> 0 แล้ว
      • det :=ส่วนจำนวนเต็มของรากที่สองของ det2
      • ถ้า det^2 เหมือนกับ det2 และ (b+det) เป็นคู่ ดังนั้น
        • ถ้า 1 <=ชั้นของ (b+det)/2 <=d แล้ว
          • อัน :=ans + 1
        • ถ้า 1 <=ชั้นของ (b-det)/2 <=d แล้ว
          • อัน :=ans + 1
  • คืนสินค้า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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))

อินพุต

2, 3, 2, 4

ผลลัพธ์

1