8000 Merge pull request #429 from HyeonJaePark/0x12-3342 · kwonja/basic-algo-lecture@7f626c4 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7f626c4

Browse files
Merge pull request encrypted-def#429 from HyeonJaePark/0x12-3342
Update 3343.cpp
2 parents 331ab4b + e161e8a commit 7f626c4

File tree

1 file changed

+47
-5
lines changed

1 file changed

+47
-5
lines changed

0x12/solutions/3343.cpp

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,53 @@
1-
// Authored by : BaaaaaaaaaaarkingDog
1+
// Authored by : HJPark
22
// Co-authored by : -
3-
// http://boj.kr/****************
3+
// http://boj.kr/0d6a75ae9ed14455830186bc75293920
44
#include <bits/stdc++.h>
55
using namespace std;
6+
using ll = long long;
67

7-
int main(void){
8+
ll n, a, b, c, d;
9+
ll ans = LLONG_MAX;
10+
11+
ll gcd(ll a, ll b) {
12+
while (b != 0) {
13+
ll r = a % b;
14+
a = b;
15+
b = r;
16+
}
17+
return a;
18+
}
19+
20+
ll lcm(ll a, ll b) {
21+
return a * b / gcd(a, b);
22+
}
23+
24+
int main(void) {
825
ios::sync_with_stdio(0);
926
cin.tie(0);
10-
11-
}
27+
28+
cin >> n >> a >> b >> c >> d;
29+
30+
if (a * d > b * c) {
31+
swap(a, c);
32+
swap(b, d);
33+
}
34+
35+
ll lst = lcm(a, c);
36+
37+
for (ll i = 0; i < (lst / a); i++) {
38+
ll cost = i * b;
39+
if (n - i * a > 0) cost += (((n - i * a - 1) / c) + 1) * d;
40+
ans = min(ans, cost);
41+
}
42+
43+
cout << ans;
44+
}
45+
46+
/*
47+
1 송이당 가격이 더 비싼 것을 a, b로 만든다.
48+
a와 c의 최소공배수 lst를 구한다.
49+
a 장미는 lst/a 보다 적게 사야한다.
50+
a 장미를 lst/a 이상 사는 경우는 c 장미를 통해서 더 싸게 구매할 수 있기 때문이다.
51+
a = 0, 1,...,lst/a - 1 일 때 총 비용을 구한다.
52+
a 장미를 i개 구매한 뒤 부족한 장미 (n-i*a)개는 c 장미를 통해서 채운다.
53+
*/

0 commit comments

Comments
 (0)
0