https://www.acmicpc.net/problem/20003
๋ฌธ์
ํ๋ก๋ถํธ๋ฌ ์ง์๋ ๋ฑ ๋จ์ด์ง์ง ์๋ ์๋ ์ง์์ด๋ค. ๊ฑฐ์ค๋ฆ๋์ด ๋จ๋ ๊ฒ๋ ๋ฑ ์ง์์ด๋ค. ์ง์๊ฐ ์์ดํ ์ ์ฌ๋ ค ํ๋๋ฐ, ์์ดํ ์ ๊ฐ๊ฒฉ์ ๋ค ๋ถ์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ง๊ธ์ ๊ฐ๋ น, 3/2์ฝ์ธ์ ์ฌ๋ ค๊ณ 2์ฝ์ธ์ ์ ๋ฆฝํ๊ณ ๊ฒฐ์ ํ๋ฉด 1/2์ฝ์ธ์ด ๋จ์๋ฒ๋ฆฌ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๊ฐ๋ฐ์ฌ์๊ฒ ๋ชจ๋ ์์ดํ ์ ๋ฑ ๋จ์ด์ง๊ฒ ๋๋ ์ ์๋ ๊ฐ๊ฒฉ ๋จ์๋ฅผ ๊ฑด์ํ๊ธฐ ์ํด, ์๋ก์ด ๊ฐ๊ฒฉ ๋จ์๋ ์ต๋ ๋ช ์ฝ์ธ์ธ์ง๋ฅผ ๊ตฌํ๋ ค๊ณ ํ๋ค.
N๊ฐ์ ์ข ๋ฅ์ ์์ดํ ์ ๋ฑ ๋จ์ด์ง๊ฒ ๋๋ ์ ์๋ ์ฝ์ธ ๋จ์๋ฅผ ๊ตฌํ๋ผ. ์ด๋ ์์ดํ ๊ณผ ์ฝ์ธ์ ๋ชจ๋ ๋ถ์ ํํ๋ก ๋์์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ์์ดํ ์ ๊ฐ์ N (1 ≤ N ≤ 50)์ด ์ฃผ์ด์ง๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ํ ์ค์ ๋ถ์ A, ๋ถ๋ชจ B (1 ≤ A, B ≤ 40) ์์ด ์ฃผ์ด์ง๋ค. ์ด๋ ๊ธฐ์ฝ๋ถ์ ํํ๊ฐ ์๋ ์๋ ์๋ค.
์ถ๋ ฅ
์๋ก์ด ์ฝ์ธ ๋จ์์ ๋ถ์, ๋ถ๋ชจ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค. ๋จ, ๊ธฐ์ฝ๋ถ์ ํํ์ด๋ค.
ํ์ด
1. ๊ฐ ๋ถ์๋ค์ ๋ถ๋ชจ์ ์ต์๊ณต๋ฐฐ์๋ก ํต๋ถ
2. ๋ถ์๋ค์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํด์ ๋ต ๋ถ์ ๊ตฌํ๊ธฐ
3. ๋ต๋ถ์ ์ฝ๋ถ
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> ci;
ll getGcd(ll a, ll b) {
ll tmp;
while(b>0) {
tmp = a%b;
a = b;
b = tmp;
}
return a;
}
ll getLcm(ll a, ll b) {
return a / getGcd(a, b) * b;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n, a, b;
ll gcd, lcm=1;
cin >> n;
vector<ci> v(n);
for(int i=0; i<n; i++) {
cin >> a >> b;
lcm = getLcm(b, lcm);
v[i] = {a,b};
}
// ํต๋ถํ์ฌ ๋ค์ ๋ฃ์ด์ฃผ๊ธฐ
ll boonmo = lcm;
for(int i=0; i<n; i++)
v[i] = {lcm / v[i].second * v[i].first, boonmo};
// ๋ถ์๋ค์ ์ต๋๊ณต์ฝ์ ๊ตฌํด์ฃผ๊ธฐ
ll boonja = v[0].first;
for(int i=1; i<n; i++)
boonja = getGcd(boonja, v[i].first);
// ์ฝ๋ถํ๊ธฐ
gcd = getGcd(boonmo, boonja);
boonja /= gcd;
boonmo /= gcd;
cout << boonja << " " << boonmo;
return 0;
}
/*
*/
'๐๏ธ ICPC Sinchon > Basic Math' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 2981๋ฒ: ๊ฒ๋ฌธ (0) | 2023.01.24 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 17087๋ฒ: ์จ๋ฐ๊ผญ์ง 6 (0) | 2023.01.24 |
[BOJ][C++] ๋ฐฑ์ค 13241๋ฒ: ์ต์๊ณต๋ฐฐ์ (0) | 2023.01.24 |
[BOJ][C++] ๋ฐฑ์ค 1850๋ฒ: ์ต๋๊ณต์ฝ์ (0) | 2023.01.24 |
[BOJ S5][C++] ๋ฐฑ์ค 14490๋ฒ: ๋ฐฑ๋์ด (0) | 2022.09.19 |