def getDivisor(n):
let = []
i = 2
while i * i <= n:
if x % i == 0:
let.append(i)
let.append(x // i)
i += 1
let.sort()
return let
def TwoPointer(arr, check, target):
x, y = 0, len(arr) - 1
while x <= y:
if check[x]:
x += 1
continue
elif check[y]:
y -= 1
continue
tmp = arr[x] * arr[y]
if tmp == target:
check[x] = True
check[y] = True
return 1
elif tmp < target:
x += 1
else:
y -= 1
return 0
for _ in range(int(input())):
x, d = map(int, input().split())
res = getDivisor(x)
arr = []
for v in res:
if v % d == 0:
arr.append(v)
print(arr)
if not arr:
print("NO")
else:
cnt = 0
check = [False] * len(arr)
success = False
for i in range(len(arr)):
cnt += TwoPointer(arr, check, x)
if cnt > 1:
success = True
if success:
print("YES")
else:
print("NO")
이 정도인데 씨 ㅡ발 뭐가 문제임?
128 4 인풋에서
당연히 Yes 떠야하는데
왜 No임?????????????
아 난 GG침 모르겠따
x가 p^7 / d가 p^2꼴인 경우에만 추가적으로 NO나옴
와 ex로 준게 이게 단하나의 예외 케이스였다고????
ㅇㅇ 해보니 그렇더라 나도 겨우 알아냄...
어케알아냈누 ; 대단하디
해보니까 됨? 사실 너 풀이를 이해하고 쓴게 아니라 풀이따라 다를수있음
ㄴㄴ그 경우만 추가해도 안됨. 그리고 이거 내가 싼 글 아니라서 저 본문 내 풀이 아님 ㅋㅋ
뭐 놓친거 있나 봄. 인도 애들이 풀이 올려주면 봐야되나 ㅋㅋ