주어진 방정식에 대한 양의 정수 솔루션 찾기
f(x, y)
이 있는 호출 가능한 함수z
가 주어지면 수식을 리버스 엔지니어링하고 모든 양의 정수 쌍x
및 y
을 반환합니다. 여기서 f(x,y) == z
는 입니다. 원하는 순서로 쌍을 반환할 수 있습니다.정확한 공식은 숨겨져 있지만 함수는 단조롭게 증가합니다. 즉:
f(x, y) < f(x + 1, y)
f(x, y) < f(x, y + 1)
함수 인터페이스는 다음과 같이 정의됩니다.
인터페이스 CustomFunction {
공공의:
//수식을 기반으로 두 양의 정수 x와 y에 대해 양의 정수 f(x, y)를 반환합니다.
int f(int x, int y);
};
귀하의 솔루션을 다음과 같이 판단합니다.
9
에 대한 모든 유효한 쌍의 답변 키를 생성하는 방법과 함께 CustomFunction
의 숨겨진 구현 목록z
을 가지고 있습니다. function_id
(코드를 테스트할 구현을 결정하기 위한) 및 대상z
의 두 가지 입력을 받습니다. findSolution
에게 전화를 걸어 귀하의 결과를 정답과 비교할 것입니다. Accepted
입니다. 예 1:
입력: function_id = 1, z = 5
출력: [[1,4],[2,3],[3,2],[4,1]]
설명: function_id = 1에 대한 숨겨진 공식은 f(x, y) = x + y입니다.
x와 y의 다음 양의 정수 값은 f(x, y)를 5와 같게 만듭니다.
x=1, y=4 -> f(1, 4) = 1 + 4 = 5.
x=2, y=3 -> f(2, 3) = 2 + 3 = 5.
x=3, y=2 -> f(3, 2) = 3 + 2 = 5.
x=4, y=1 -> f(4, 1) = 4 + 1 = 5.
예 2:
입력: function_id = 2, z = 5
출력: [[1,5],[5,1]]
설명: function_id = 2에 대한 숨겨진 공식은 f(x, y) = x * y입니다.
x와 y의 다음 양의 정수 값은 f(x, y)를 5와 같게 만듭니다.
x=1, y=5 -> f(1, 5) = 1 * 5 = 5.
x=5, y=1 -> f(5, 1) = 5 * 1 = 5.
제약:
1 <= function_id <= 9
1 <= z <= 100
f(x, y) == z
의 해가 1 <= x, y <= 1000
범위에 있음이 보장됩니다. f(x, y)
가 1 <= x, y <= 1000
인 경우 32비트 부호 있는 정수에 맞도록 보장됩니다. 해결책:
"""
This is the custom function interface.
You should not implement it, or speculate about its implementation
class CustomFunction:
# Returns f(x, y) for any given positive integers x and y.
# Note that f(x, y) is increasing with respect to both x and y.
# i.e. f(x, y) < f(x + 1, y), f(x, y) < f(x, y + 1)
def f(self, x, y):
"""
class Solution:
def findSolution(self, customfunction: 'CustomFunction', z: int) -> List[List[int]]:
op = []
for x in range(1, 1001):
beg = 1
end = 1000
while beg <= end:
y = (beg + end) // 2
val = customfunction.f(x, y)
if val == z:
op.append([x, y])
break
elif beg == end:
break
elif val > z:
end = y
else:
beg = y + 1
return op
Reference
이 문제에 관하여(주어진 방정식에 대한 양의 정수 솔루션 찾기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/find-positive-integer-solution-for-a-given-equation-33e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)