알고리즘/백준

[백준/Python] 1402번: 아무래도이문제는A번난이도인것같다

이우열 2023. 2. 24. 22:29
728x90

https://www.acmicpc.net/problem/1402

 

1402번: 아무래도이문제는A번난이도인것같다

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다.

www.acmicpc.net



문제 분석

처음 문제를 읽었을 때는 경우의 수가 엄청 많다고 생각했다.

일단 소인수분해를 해서 합이 되는 경우를 모두 계산해서 저장해두어야 하나?

입력 범위가 크니 작은 수부터 경우를 구해서 DP를 이용해야 하나?

근데 음수는 어떻게 판단하지?

 

많은 고민들이 있었던 것 같다.

하지만 정말 어이없게도 문제는 너무 간단했다..

 

A = a1 * a2 * a3 * ... * an으로 했을 때 A' = a1 + a2 + a3 + ... + an이면 A는 A'가 될 수 있다고 한다.

만약 A를 A * 1이라고 표현했을 때 A' = A + 1이 된다.

 

이를 반복하면

A = A * 1 * 1일 때는 A' = A + 2 ....

즉, A는 A보다 큰 모든 수는 다 가능하게 된다!

 

음수의 경우는 어떨까?

 

A = A * -1 * -1 * 1이라는 식으로 표현할 수 있다.

이 경우에는 A'이 A - 1 - 1 + 1이 되는데 즉 A' = A - 1이 된다..

이런 식으로 A는 A보다 작은 모든 수도 다 가능하다는 것이다..

 

결론적으로 어떠한 수가 A, B로 와도 모든 경우가 다 가능하다는 것이다!!

 


 

코드

더보기
for _ in range(int(input())):
    a, b = map(int, input().split())

    print("yes")
728x90