- 문제 링크 : boj.kr/2090
- 난이도 : S4
- 태그 : 수학, 정수론
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
ll gcd(ll a, ll b)
{
if (!b) return a;
return gcd(b, a % b);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n;
cin >> n;
vector<ll> arr(n);
ll mult = 1;
for(auto &e : arr) {
cin >> e;
mult *= e;
}
ll msum = 0;
for(auto e : arr) {
msum += mult / e;
}
ll g = gcd(msum, mult);
cout << mult/g << "/" << msum/g;
return 0;
}
풀이
모든 값을 곱한 값을 M이라고 할때, 식을 정리하면 조화평균은 아래와 같다.
$${M} \over {\sum\limits_{i=1}^{n} {M \over a_i}}$$
$M \over a_i$는 정수이므로 분자와 분모가 두 정수 값으로 정해진다.
두 정수를 최대공약수로 나누어주면 된다.
728x90
'PS' 카테고리의 다른 글
BOJ 9324 : 진짜 메시지 (0) | 2025.02.19 |
---|---|
BOJ 1980 : 햄버거 사랑 (0) | 2025.02.17 |
BOJ 2312 : 수 복원하기 (0) | 2025.02.15 |
BOJ 7585 : Brackets (0) | 2025.02.14 |
BOJ 20118 : 호반우가 길을 건너간 이유 (0) | 2025.02.13 |