백준 3036 c++

magicdrill·2024년 6월 14일

백준 문제풀이

목록 보기
370/673

백준 3036 c++

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;
}

0개의 댓글