Hướng dẫn giải của IF08: Hóa đơn tiền điện
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Hướng dẫn giải
Cho số kWh điện x đã dùng (x \le 100000). Theo bảng giá theo bậc, cần tính số tiền phải trả.
Cách làm
- Đọc số x vào biến kiểu long long.
- Nếu x không quá 100 thì tiền bằng x nhân 2000.
- Nếu x nằm trong khoảng từ 101 đến 200 thì tiền bằng 100 nhân 2000, cộng (x - 100) nhân 3000.
- Nếu x nằm trong khoảng từ 201 đến 300 thì tiền bằng 100 nhân 2000, cộng 100 nhân 3000, cộng (x - 200) nhân 5000.
- Nếu x lớn hơn 300 thì cộng thêm (x - 300) nhân 10000 vào tổng của ba bậc đầu. Bẫy: số tiền có thể lớn, nên dùng long long.
#include <bits/stdc++.h>
using namespace std;
int main() {
long long x;
cin >> x;
long long tien = 0;
// Tính theo từng bậc, mỗi bậc lấy đúng số kWh của bậc đó
if (x <= 100) {
tien = x * 2000;
} else if (x <= 200) {
tien = 100 * 2000 + (x - 100) * 3000;
} else if (x <= 300) {
tien = 100 * 2000 + 100 * 3000 + (x - 200) * 5000;
} else {
// Nhớ dùng long long vì số tiền có thể lớn
tien = 100 * 2000 + 100 * 3000 + 100 * 5000 + (x - 300) * 10000;
}
cout << tien << "\n";
return 0;
}
Bình luận