문제 풀이
간단한 수학 문제다.
첫 번째 링을 한 바퀴 돌리면 그 링은 몇 바퀴 도는지 기약 분수 형태로 출력한다.
기약 분수 형태로 출력하고자 한다면 유클리드 호제법을 떠올리면 된다.
어떤 분수를 기약 분수 형태로 만들고 싶을 때 최대 공약수로 나누면 기약 분수 형태를 만들 수 있기 때문이다.
소스 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
if (b == 0) return a;
else return gcd(b, a % b);
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) cin >> v[i];
for (int i = 1; i < n; i++)
{
int g = gcd(v[0], v[i]);
int A = v[0] / g;
int B = v[i] / g;
cout << A << '/' << B << '\n';
}
return 0;
}
'Algorithm' 카테고리의 다른 글
[백준 6593] 상범 빌딩 (0) | 2021.11.11 |
---|---|
[백준 2573] 빙산 (0) | 2021.11.10 |
[백준 1037] 약수 (0) | 2021.11.09 |
[백준 2665] 미로만들기 (0) | 2021.11.08 |
[백준 14221] 편의점 (0) | 2021.11.04 |