양의 정수 ,가 주어지면, 이고 인 자연수 쌍 가 존재하는지의 여부를 출력하자.
첫째 줄에 질의의 개수 가 주어진다.
둘째 줄부터 개의 줄에 걸쳐 정수 가 공백으로 구분되어 주어진다.
질의마다 조건에 맞는 자연수 쌍이 존재하면 , 그렇지 않으면 을 줄마다 출력한다.
2
1 4
2 3
1
0
import sys
'''
25375
gcd(x,y) = a
x+y = b
인 자연수 존재 여부
시간 초과
-> gcd 최적화
'''
def check_role(q, array):
result = []
for i in range(0,q,2):
a,b = int(array[i]), int(array[i+1])
if b % a == 0 and 2*a <= b:
result.append('1')
else:
result.append('0')
return "\n".join(result)
def main():
inputs = sys.stdin.read().split()
sys.stdout.write(check_role(int(inputs[0])*2, inputs[1:]))
if __name__ == '__main__':
main()
gcd 사용해봤는데 바로 시간 초과. 알고보니까 10^18이라 전체 조회는 힘듬. 그래서 pa + qa = b 이니까 b%a인거 찾음. 그리고 a가 gcd니까 b가 2a 보다는 크다고 생각. 그냥 해봤는데 통과. 먼가 이거 아닌거 같은데...
사람들이 안풀어서인지 바로 1등
import sys
def process_test_cases(num_cases, test_cases):
results = []
for i in range(0, num_cases * 2, 2):
a, b = int(test_cases[i]), int(test_cases[i+1])
if b % a == 0 and 2 * a <= b:
results.append('1')
else:
results.append('0')
return "\n".join(results)
def main():
inputs = sys.stdin.read().split()
num_cases = int(inputs[0])
test_cases = inputs[1:]
sys.stdout.write(process_test_cases(num_cases, test_cases))
if __name__ == '__main__':
main()