※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 27467번 문제인 수학 퀴즈이다.
문제는 아래 링크를 확인하자.

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

 

27467번: 수학 퀴즈

문제에서 설명한 두 실수 $p$, $q$를 출력한다. 단, 정답과의 절대/상대 오차는 $10^{-9}$까지 허용한다.

www.acmicpc.net

\(\omega^2+\omega+1=0\) 의 양변에 \(w-1\)을 곱해 좌변을 전개하면 \(\omega^3=1\)을 얻을 수 있다. 따라서 \( \omega^k = \omega^{3m + k} \)이 성립한다. (단, \(m\)은 정수이다.) 이를 이용하면 모든 \(\omega^k\)의 꼴을 \(\omega\)에 대한 (최대) 이차식으로 변형할 수 있게 된다.

 

위의 성질과 주어진 식에서 이항을 통해 얻을 수 있는 \(\omega^2=-\omega-1\)와 같은 식을 이용해 주어진 식을 \(\omega\)에 대한 일차식으로 변형하고 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int N;
int P, Q;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> N;
	while (N--) {
		int A; cin >> A;
		A %= 3;
		if (A == 2) P--, Q--;
		else if (A == 1) P++;
		else Q++;
	}

	cout << P << ' ' << Q;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 9784 // C++] Boiled Eggs  (0) 2023.02.20
[BOJ 11605 // C++] Magic Trick  (0) 2023.02.20
[BOJ 1802 // C++] 종이 접기  (0) 2023.02.19
[BOJ 25276 // C++] Sperhling  (0) 2023.02.19
[BOJ 27466 // C++] 그래서 대회 이름 뭐로 하죠  (0) 2023.02.19

+ Recent posts