Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
0.5s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
HD cần mua ~n~ chiếc vé xe bus, một chiếc vé có giá là ~a~ VNĐ, và HD cũng biết rằng có một gói khuyến mại là mua ~m~ vé mất ~b~ VNĐ.
Yêu cầu: Viết chương trình, nhập ~n,m,a,b\ (1≤n,m,a,b≤1000)~, bạn hãy tính xem HD mất ít nhất bao nhiêu tiền để có ~n~ vé xe bus.
Input
- Dòng đầu chứa số lượng câu hỏi ~t\ (1≤t≤10)~;
- ~t~ dòng sau, mỗi dòng là một câu hỏi gồm một bộ ~4~ số nguyên ~n,m,a,b\ (1≤n,m,a,b≤1000)~.
Output
- Ghi trên ~t~ dòng, dòng ~i~ ghi câu trả lời cho câu hỏi ~i~, ghi số tiền ít nhất.
Sample
Input #1
2
6 2 1 2
5 2 2 3
Output #1
6
8
Problem source: Chuyên Sơn La Online Judge
Bình luận
// code đã thu ồi
// code đã thu hồi
Ý tưởng:
Số tiền mua hết đúng n vé (có sử dụng khuyến mãi) là: (n / m) * b + (n % m) * a.
Số tiền mua hết đúng n vé (không khuyến mãi): n * a
Số tiền mua nhiều hơn n vé (có sử dụng khuyến mãi): (n / m + 1) * b
Không cần trường hợp mua nhiều hơn n vé (không khuyến mãi) vì kiểu gì trường hợp đó cũng tốn tiền hơn mua hết đúng n vé (không khuyến mãi).
Không phải lúc nào mua vé kèm khuyến mãi cũng sẽ tốt nhất. Và có cả trường hợp mua nhiều hơn n vé (áp dụng khuyến mãi) sẽ tốt hơn mua đúng n vé.
So sánh 3 trường hợp để suy ra kết quả. Chúc các bạn AC
CƯỜNG GIẢ HỌ ĐINH, VẠN CỔ TỐI CƯỜNG. CAO CAO TẠI THƯỢNG, DUY NGÃ ĐỘC TÔN