반응형

https://www.acmicpc.net/problem/20003

 

20003번: 거스름돈이 싫어요

프로불편러 지수는 딱 떨어지지 않는 수는 질색이다. 거스름돈이 남는 것도 딱 질색이다. 지수가 아이템을 사려 하는데, 아이템의 가격은 다 분수로 이루어져 있다. 지금은 가령, 3/2코인을 사려

www.acmicpc.net

 

분자의 최소공배수와 분모의 최대공약수를 구해주면 최대 코인 단위를 구할 수 있습니다.

주의할 점은, 주어지는 아이템의 가격은 기약분수 형태가 아닐 수 있기 때문에,

기약분수형태로 만들어준 뒤에 최소공배수와 최대공약수를 구해주어야합니다.

 

#include <iostream>
using namespace std;

typedef long long ll;

int n, m;

ll gcd(ll a, ll b) {
	return b ? gcd(b, a % b) : a;
}

ll lcm(ll a, ll b) {
	return a / gcd(a, b) * b;
}

void fraction(ll& a, ll& b) {
	ll g = gcd(a, b);
	a /= g, b /= g;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	ll a, b, aa, bb;
	cin >> n >> a >> b;
	fraction(a, b);
	while (--n) {
		cin >> aa >> bb;
		fraction(aa, bb);
		a = gcd(a, aa);
		b = lcm(b, bb);
	}
	cout << a << " " << b;
}
반응형

'Algorithm' 카테고리의 다른 글

백준 9944 : NxM 보드 완주하기  (0) 2021.11.16
백준 16929 : Two Dots  (0) 2021.11.16
백준 16954 : 움직이는 미로 탈출  (0) 2021.11.16
백준 16932 : 모양 만들기  (0) 2021.11.16
백준 14725 : 개미굴  (0) 2021.11.16

+ Recent posts