LCM,GCD를 사용하는 문제이다.
자주 사용해 봤는데 아직도 자주 까먹는다.
따로 정리해보겠다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void input_ring(vector<int> &ring)
{
int N, temp;
int i;
cin >> N;
for (i = 0; i < N; i++)
{
cin >> temp;
ring.push_back(temp);
}
return;
}
int gcd(int A, int B)
{
if (B != 0)
{
return gcd(B, A % B);
}
else
{
return A;
}
}
int lcm(int A, int B)
{
int ans;
ans = A * B / gcd(A, B);
return ans;
}
void find_answer(vector<int>& ring)
{
int i, N = ring.size();
int first_ring = ring[0];
int LCM;
for (i = 1; i < N; i++)
{
//최소공배수 구해서 각각 나누기
LCM = lcm(first_ring, ring[i]);
//cout << "LCM : " << LCM << "\n";
cout << LCM / ring[i] << "/" << LCM / first_ring << "\n";
}
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
vector<int> ring;
input_ring(ring);
find_answer(ring);
return 0;
}