1. 문제
25375번: 아주 간단한 문제 (acmicpc.net)
25375번: 아주 간단한 문제
양의 정수 a, b가 주어지면, gcd(x,y)=a이고 x+y=b인 자연수 쌍 (x,y)가 존재하는지의 여부를 출력하자.
www.acmicpc.net
2. 풀이
gcd(x,y) = a라는 것은 x,y가 a의 배수라는 것이다. ( a >= 1)
즉 x,y는 어떤 자연수 k1와 k2에 대하여 x=ak1 y=ak2
그러므로 x+y = b를 a로 나눈다면.. k1+k2=ba
여기서 k1와 k2이 자연수이므로 우변 ba는 자연수이다.
그러므로 자연수 쌍 (x,y)가 존재할려면 b가 a의 배수여야한다.
그런데 단순히 배수이면 될까?
문제에서 x,y는 자연수이므로 최소가 각각 1이다.
그러므로 k1와 k2의 합은 최소 2이다.
그런데 b가 a와 동일하다면, ba는 1이므로 b가 a의 배수더라도 자연수 쌍 (x,y)는 존재하지 않는다
따라서 b가 a의 배수이고 a와 b가 다를때, 즉 ba가 2 이상이면 자연수 쌍 (x,y)가 반드시 존재한다.
그러니까 k1와 k2의 합이 ba인 자연수 k1와 k2를 아무거나 선택하면, (x,y)를 반드시 만들 수 있다.
from sys import stdin
q = int(stdin.readline())
for _ in range(q):
a,b = map(int,stdin.readline().split())
if(b % a == 0):
if b // a >= 2:
print(1)
else:
print(0)
else:
print(0)
728x90
'정수론' 카테고리의 다른 글
피사노 주기를 이용한 피보나치 수열 해법 (0) | 2023.03.19 |
---|---|
어떤 수를 서로소 쌍의 곱으로 빠르게 분해하는 방법 (0) | 2023.03.08 |
약수의 개수가 짝수인지 홀수인지 바로 알아내는 제곱수 판단하는 방법 (0) | 2023.03.05 |
등차수열 구간의 최대공약수를 한번에 구하는 방법 (0) | 2023.02.27 |
골드바흐의 추측을 알고리즘 문제에 적용하는 방법 (0) | 2023.02.06 |