-- 예전 기록/BOJ

[ BOJ ] 1402 : 아무래도이문제는A번난이도인것같다 ( SILVER 5 ) / C, Python

rejo 2023. 10. 3. 10:50

문제

어떤 정수 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 -> B로 바꾸기 위해서는, 1 과 -1 을 적절히 사용하면 된다.

Ex) 10 -> 20 

10 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 (10) -> 10 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 (20)

Ex) 10 -> 9

10 * 1 * -1 * -1 (10) -> 10 + 1 + -1 + -1 (9)

따라서, 모든 경우에 변할 수 있다.

C

#include <stdio.h>

int main(void) {
    int t;
    scanf("%d", &t);

    while(t--) {
        int a, b;
        scanf("%d %d", &a, &b); 
        printf("yes\n");
    }
    return 0;
}

 

Python

t = int(input())
for _ in range(t):
    a, b = map(int, input().split())
    print('yes')