Điểm:
100 (p)
Thời gian:
0.5s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Bạn muốn mua \(N\) lít xăng, không thừa không thiếu. Tại một tiệm xăng nọ có hai phương thức mua xăng:
- 1L: Mua 1 lít với giá \(a\) đồng
- 2L: Mua 2 lít với giá \(b\) đồng
Cho ba số \(N\), \(a\), \(b\). Hãy tính chi phí ít nhất cần để mua đúng chính xác \(N\) lít xăng.
Input
- Dòng đầu tiên chứa một số nguyên dương \(N\) \((1 \leq N \leq 10^9)\)
- Dòng thứ hai chứa hai số nguyên dương lần lượt là \(a\) và \(b\) \((1 \leq a, b \leq 10^9)\)
Output
In ra một số nguyên, là số tiền tối thiểu cần để mua đúng chính xác \(N\) lít xăng tại tiệm xăng đó.
Example
Test 1
Input
5
1 1
Output
3
Note
- Để mua \(5\) lít xăng, bạn có thể chọn phương án mua: 2L, 2L, 1L có tổng tiền sẽ là \(3\), là kết quả tối ưu.
Test 2
Input
7
1 7
Output
7
Note
- Tại trường hợp này, bạn có thể mua 7 lần 1L có tổng là \(7\) tiền. Nếu dù chỉ mua một lần 2L kia đủ để khiến đáp án là \(7\), nên ta không xét đến nó.
Bình luận
include <bits/stdc++.h>
using namespace std;
int main() {
long long N, a, b;
cin >> N >> a >> b;
long long cost1 = N * a;
long long cost2 = (N / 2) * b + (N % 2) * a;
cout << min(cost1, cost2) << endl;
return 0;
}
This comment is hidden due to too much negative feedback. Click here to view it.
test case thứ 3 sao lại ra 22994887 nhỉ, mọi người giải thích giúp mình với
test 11 mk chạy sai là sao nhỉ
Ý tưởng
Mua 1 lít với giá a đồng .
Mua 2 lít với giá b đồng .
-> Mua 2 lít với giá 2a đồng và mua 2 lít với giá b đồng.
Vì cùng số lít nên có thể xét chọn cái nào khả quan hơn, và khi số lít cần mua lẻ, lần cuối chỉ chọn 1 lít.
hm
This comment is hidden due to too much negative feedback. Click here to view it.
This comment is hidden due to too much negative feedback. Click here to view it.