백준 24040번 예쁜 케이크

honeyricecake·2022년 1월 14일
0

백준

목록 보기
12/30

https://www.acmicpc.net/problem/status/24040

N = x*y일 때
2x + 2y가 3의 배수임을 판정하는 문제

2x + 2y가 3의 배수이면 x + y가 3의 배수인데
x + y가 3의 배수인 경우의 수는
x = 3p, y = 3q 또는
x = 3p +1, y = 3q + 2 (p,q는 0이상의 정수)
(x와 y가 바뀌어도 되지만 이는 x와 y를 바꾸기 전을 보는 것과 같으므로 생각하지 않아도 된다.)
이 때 이 둘의 곱은 3pq 또는 9pq + 6p + 3q + 2
이 때 9pq + 6p + 3q는 3으로 묶으면 3(3pq + 2p + q)이고 p가 0이면 3pq + 2p + q는 모든 정수가 가능하므로 이 둘의 곱은 3의 배수 + 2

따라서 xy가 9의 배수 또는 3의 배수 + 2이면 2x + 2y는 3의 배수이다.

예시
xy = 11 이라 하자. p가 0이기만 하면 즉, x나 y중 하나가 1이기만 하면
x = 1 y = 11
둘의 합은 3의 배수가 되므로 성립

내 코드

#include <stdio.h>

int main()
{
	int i, T;
	long long N;
	scanf("%d", &T);
	for (i = 0; i < T; i++)
	{
		scanf("%lld", &N); //longlong은 long long이므로 ll그리고 d 그래서 lld로 받아오고 프린트해야한다.
		if ((N % 3) == 2 ||(N % 9) == 0) printf("TAK\n");
		else printf("NIE\n");
	}
	return 0;
}

0개의 댓글