PS
BOJ 1214 : 쿨한 물건 구매
lickelon
2024. 11. 14. 16:48
- 문제 링크 : boj.kr/1214
- 난이도 : P5
- 태그 : 정수론, 브루트포스
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
코드
#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>;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
ll d, p, q;
cin >> d >> p >> q;
if(p < q) swap(p, q);
ll ans = INF;
for(ll i = 0; i < min(d/q, q) + 1; i++) {
ll l = max(d - i*p, 0ll);
ll c = l / q + !!(l % q);
ans = min(ans, i*p + c*q);
}
cout << ans;
return 0;
}
풀이
값을 만족하는 최솟값 X를 X = aP + bQ라고 할 때, a=0일때의 X값과 a = Q일때의 X값이 같다.
따라서 탐색해야 할 a의 값을 min(D/P, Q)이하로 할 수 있다.
728x90