Giả sử chúng ta có bốn số a, b, c và d và Chúng ta phải tìm số cặp (x, y) có thể tìm được sao cho có phương trình:x ^ 2 + y ^ 2 =(x * a) + ( y * b) trong đó x trong phạm vi [1, c] và y trong phạm vi [1, d]
Vì vậy, nếu đầu vào là a =2 b =3 c =2 d =4, thì đầu ra sẽ là 1 vì một cặp là (1, 1).
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- ans:=0
- đối với x trong phạm vi từ 1 đến c, thực hiện
- l:=x * (x-a)
- det2:=b * b - 4 * l
- nếu det2 giống 0 và b là chẵn và 1 <=tầng của (b / 2) <=d, thì
- ans:=ans + 1
- chuyển sang lần lặp tiếp theo
- nếu det2> 0, thì
- det:=phần nguyên của căn bậc hai của det2
- nếu det ^ 2 giống với det2 và (b + det) là chẵn, thì
- nếu 1 <=tầng của (b + det) / 2 <=d, thì
- ans:=ans + 1
- nếu 1 <=tầng của (b-det) / 2 <=d, thì
- ans:=ans + 1
- nếu 1 <=tầng của (b + det) / 2 <=d, thì
- trả lại ans
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
2, 3, 2, 4
Đầu ra
1