Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 4개의 매개변수를 사용하여 주어진 방정식에 대한 솔루션의 수를 찾는 프로그램

<시간/>

4개의 숫자 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
  • 1~c 범위의 x에 대해 다음을 수행합니다.
    • l :=x*(x-a)
    • det2 :=b*b - 4*l
    • det2가 0과 같고 b가 짝수이고 1 <=floor of (b/2) <=d이면
      • ans :=ans + 1
      • 다음 반복으로 이동
    • det2> 0이면
      • det :=det2 제곱근의 정수 부분
      • det^2가 det2와 같고 (b+det)가 짝수이면
        • 1 <=floor of (b+det)/2 <=d이면
          • ans :=ans + 1
        • 1 <=(b-det)/2 <=d의 ​​바닥이면
          • ans :=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