[BAEKJOON] 1402번: 아무래도이문제는A번난이도인것같다
문제
어떤 정수 A가 있으면 그 수를 A = a1 * a2 * a3 * a4 ... * an으로 했을 때 A' = a1 + a2 + a3 ... + an이 성립하면 "A는 A'으로 변할 수 있다"라고 한다. (ai는 정수) 만약 A'이 A"으로 변할 수 있으면 "A는 A"으로 변할 수 있다"라고 한다.
이때 A와 B가 주어지면 A는 B로 변할 수 있는지 판별하시오.
코드
for _ in range(int(input())):
a, b = map(int, input().split())
print("yes")
나의 생각
처음에 이 문제를 보고 소인수분해를 사용해서 풀려고 했지만 계속 시간 초과가 발생했다.
그래서 보니 입력 데이터가 너무 많았다.
그래서 구글링을 해보니 굉장히 간단한 문제였다!!!
A는 여러 정수 a1, a2, a3, ... , an의 곱으로 표현되고, A'은 그 정수들의 합으로 표현된다.
이제 이것을 예를 들어 설명해보자면
예를 들어, A = 6이라고 가정하자. A를 곱으로 표현하면:
A = 2 * 3
그리고 A'은 이 정수들의 합으로 표현된다:
A' = 2 + 3 = 5
이제 A를 A'로 변환하는 것을 생각해보자. 주어진 조건에 따라 A를 변환하기 위해 A를 A * 1로 표현할 수 있다.
A = 6
A = 6 * 1
그리고 A'을 계산한다:
A' = A + 1
A' = 6 + 1
A' = 7
즉, A를 A'로 변환한 것입니다. 이제 다른 숫자로도 A를 A'로 변환할 수 있다.
예를 들어, A = 7인 경우:
A = 7
A = 7 * 1 * 1
그리고 A'을 계산:
A' = A + 2
A' = 7 + 2
A' = 9
따라서 A = 7을 A' = 9로 변환할 수도 있다. 이런 식으로 A를 A'로 변환하는 것은 어떤 정수 A에 대해서도 가능하다!!!
즉, "A = A * 1 * 1"에서 A'을 계속해서 A + 2, A + 3, ...과 같이 증가시킬 수 있기 때문에 A는 A보다 큰 모든 수로 변환 가능하다는 것을 의미한다.
그래서 그냥 무조건 yes를 출력한다 ....