728x90
반응형
27467번: 수학 퀴즈
문제
https://www.acmicpc.net/problem/27467
27467번: 수학 퀴즈
문제에서 설명한 두 실수 $p$, $q$를 출력한다. 단, 정답과의 절대/상대 오차는 $10^{-9}$까지 허용한다.
www.acmicpc.net
풀이
복소근에 대한 개념을 알고 있다면 쉽게 풀 수 있는 문제.
x^2+x+1=0의 한 복소근 w이므로 w^3 = 1, w^2 = -w-1이다. 따라서 3의 N승일 때, N을 3으로 나눈 나머지로 바꾸어 계산해도 된다.
이후엔 pw + q 의 형태로 계산하여 p와 q를 출력하면 된다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
double p = 0, q = 0;
cin >> n;
while (n--) {
int x;
cin >> x;
if (x > 3) {
x %= 3;
}
if (x == 1) {
p++;
} else if (x == 2) {
p--;
q--;
} else {
q++;
}
}
cout.precision(10);
cout << fixed << p << ' ' << q << '\n';
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 1259 팰린드롬수 (0) | 2023.02.12 |
---|---|
[백준 / BOJ] C++ 1237 정ㅋ벅ㅋ (0) | 2023.02.12 |
[백준 / BOJ] C++ 27465 소수가 아닌 수 (0) | 2023.02.12 |
[백준 / BOJ] C++ 27445 Gorani Command (0) | 2023.02.11 |
[백준 / BOJ] C++ 1193 분수찾기 (0) | 2023.02.11 |