문제링크
https://www.acmicpc.net/problem/1402
문제
어떤 정수 A가 있으면 그 숫자를 A = a1 * a2 * a3 * a4 ... * an으로 했을 때 A' = a1 + a2 + a3 ... + an이 성립하면 "A는 A'으로 변할 수 있다"라고 한다. (ai는 정수) 만약 A'이 A''으로 변할 수 있으면 "A는 A''으로 변할 수 있다"라고 한다.
이때 A와 B가 주어지면 A는 B로 변할 수 있는지 판별하시오.
입력
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 100)이 주어진다. 테스트 케이스마다 두 정수 A, B(-231 ≤ A, B ≤ 231-1)가 주어진다.
출력
각각의 테스트 케이스마다 한 줄에 변할 수 있으면 yes, 아니면 no를 출력한다.
해석
이 문제의 경우 해석이 굉장히 중요하다.
모든 수는 A = 1*1*1*1*...*A로 표현이 가능하기 때문에 no인 경우는 없다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <iostream>
using namespace std;
int main() {
int t, a, b;
cin >> t;
while (t--) {
cin >> a >> b;
cout << "yes" << endl;
}
}
|
cs |
Memo
소인수를 차곡차곡 쌓아가는 방법을 짜고 예외의 경우를 생각하다가 위와 같은 해석이 나오게 된 문제다.