※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 10834번 문제인 벨트이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/10834
10834번: 벨트
첫 줄에는 벨트의 개수를 나타내는 자연수 M(1 ≤ M ≤ 1,000)이 주어진다. 다음 M개의 줄에는 1번 벨트부터 순서대로 벨트로 이어진 두 바퀴의 회전수의 비를 나타내는 두 개의 양의 정수 a, b와 벨
www.acmicpc.net
일반적인 조건 하에서는 분수를 이용해야겠지만, 주어진 조건을 잘 보면 이 문제는 단순한 곱셈과 나눗셈만으로 해결이 가능하다는 것을 알 수 있을 것이다.
특히, 입력 조건의 마지막 두 문장을 주의깊게 읽어보자.
단, 바퀴의 분당 회전수를 32비트 정수형으로 저장하는 경우 오버플로우가 일어나지 않게 나눌 수를 먼저 나누고 곱할 수를 곱하는 것이 바람직하다. (또는 64비트 정수형을 이용할 수도 있다.)
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int ans = 1;
int rot = 0;
int N; cin >> N;
while (N--) {
int x, y, r; cin >> x >> y >> r;
ans /= x;
ans *= y;
rot ^= r;
}
cout << rot << ' ' << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 10804 // C++] 카드 역배치 (0) | 2021.06.01 |
---|---|
[BOJ 10984 // C++] 내 학점을 구해줘 (0) | 2021.06.01 |
[BOJ 1173 // C++] 운동 (0) | 2021.06.01 |
[BOJ 2744 // C++] 대소문자 바꾸기 (0) | 2021.06.01 |
[BOJ 1357 // C++] 뒤집힌 덧셈 (0) | 2021.06.01 |