코드
#include <iostream>
using namespace std;
int tc, _a1, _p1, _r1, _p2;
void FASTIO() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int gcd(int x, int y) {
int tmp = x;
while(y > 0) {
x = y;
y = tmp % y;
}
return x;
}
int main() {
FASTIO();
cin >> tc;
while(tc--) {
cin >> _a1 >> _p1 >> _r1 >> _p2;
int g = gcd(_p1, _p2);
int lcm = _p1 * _p2 / g;
_r1 *= (_r1 * 3.14);
_a1 *= (lcm / _p1);
_r1 *= (lcm / _p2);
if(_a1 < _r1) {
cout << "Whole pizza\n";
} else if (_r1 < _a1) {
cout << "Slice of pizza\n";
}
}
return 0;
}
풀이
유클리드 호제법을 이용해 최대공약수를 구하고, 통분하여 분자를 더 큰 값을 찾아주었다. 부동소수점 오차 때문에 정수로 비교했는데 이 문제에서는 크게 상관 없는 듯하다. 주의할 점은 원주율을 정확히 곱해줘야한다는 점 정도가 있다.
'백준' 카테고리의 다른 글
[백준] 4159번 알래스카 C++ 코드 (0) | 2024.12.18 |
---|---|
[백준] 13414번 수강신청 C++ 코드 (0) | 2024.12.18 |
[백준] 29813번 최애의 팀원 C++ 코드 (0) | 2024.12.17 |
[백준] 10491번 Quite a problem C++ 코드 (0) | 2024.12.17 |
[백준] 25175번 두~~부 두부 두부 C++ 코드 (2) | 2024.12.17 |