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

 

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

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

www.acmicpc.net

#include <stdio.h>
#pragma warning(disable:4996)
int main() {
	int r, n, n1;
	scanf("%d", &r);
	for (int i = 0; i < r; i++) {
		scanf("%d %d", &n, &n1);
		printf("yes\n");
	}
	return 0;
}

이 문제는 참 할 말이 많다...

 

힌트

6 = 2*3, 2+3=5이므로 성립한다.

힌트가 이런 식으로 주어져 있어서 처음에는 인수분해를 이용해서 문제를 풀어야 하나 생각했다.

하지만 내 머리로는 생각도 불가능하고 길이를 생각해봐도 출력이 초과될 것 같았다.

막상 답을 구했을 때는 참... 이거 풀겠다고 1시간을 썼나 싶을 정도로 간단한 답이 도출되었다.

답은 항상 yes이다...

왜 그럴까? 보기에는 항상 yes인 것은 불가능해 보인다. 

하지만 이 점을 생각해보아야 한다.

a 가 b가 되기 위해서 곱할 수 있는 i는 제한이 없다.

음... 그래도 이해가 쉽지 않을 수 있다, 그러니 예시를 하나 들어보자.

a는 4를 입력받았고, b는 10을 입력받았다.

4 = 2 * 2, 10 = 2 + 8

엥 ? 어림도 없는 결과가 나온다.

하지만 이렇게 생각해보자. 

4는 4 * 1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1 *1...... 와 같이도 나타낼 수 있다.

그럼 다시 a와 b를 보자

4 = 4 * 1 * 1 * 1 * 1 * 1 * 1, 10 = 4 + 1 + 1 + 1 + 1 + 1 + 1

이렇게도 성립한다.

허 참... 항상 논리적으로 생각할 필요가 있는 것 같다.

'TeamLog > 과제' 카테고리의 다른 글

c언어 함수 개념 정리  (0) 2023.04.17
1598. 꼬리를 무는 숫자 나열  (0) 2023.04.10
8958. OX퀴즈  (0) 2023.04.09
2609. 최대공약수와 최소공배수  (0) 2023.04.09
1259. 팰린드롬수  (0) 2023.04.09
vkeod