[백준] 3036번 링 / C++
#문제
#풀이
#include <iostream>
using namespace std;
int LCM(int x, int y)
{
int a = x > y ? x : y;
int b = x > y ? y : x;
int r = a % b;
while (r != 0)
{
a = b;
b = r;
r = a % b;
}
return b;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, x;
cin >> n >> x;
for (int i = 1; i < n; ++i)
{
int y;
cin >> y;
int lcm = LCM(x, y);
cout << x / lcm << "/" << y / lcm << '\n';
}
return 0;
}
#정리
3보다 크거나 같고, 100보다 작거나 같은 n개의 링을 입력 받는다. 첫 번째 받은 링을 한 바퀴 돌리면 나머지 링이 몇 바퀴 도는지 기약 분수 형태로 A/B 형태를 출력하는 문제. 문제를 읽었을 땐, 바로 와닿지 않았지만, 입력 출력 예시를 보고 금방 이해했다. 첫 번째 받은 숫자와 두 번째 받은 숫자부터 각각 짝으로 최고공배수를 구해서 나눈 값을 출력하면 되겠다고 생각했다. n과 x를 먼저 받고, n - 1 만큼 숫자를 y로 받으면서, x와 y의 최소 공배수를 구하고 각각 최소 공배수로 나눈 값을 출력하여 해결.
Enjoy Reading This Article?
Here are some more articles you might like to read next: