Đề bài
Tiền thường được lưu bằng số xu nguyên để tránh lỗi làm tròn và chỉ được định dạng thành đô la khi hiển thị.
Với mỗi mặt hàng, viết dòng <name> x<quantity> = <amount>, trong đó amount = quantity × giá tính bằng xu. Sau các mặt hàng, viết Total = <amount> với tổng của mọi dòng.
Định dạng mọi số tiền thành đô la, một dấu chấm và đúng hai chữ số xu, ví dụ 5 → 0.05 và 1250 → 12.50.
Hãy viết format_invoice(names, quantities, cents).
Đầu vào
names, quantities, cents: Các danh sách tương ứng mô tả từng mặt hàng.
Đầu ra
Trả về các dòng mặt hàng, tiếp theo là dòng tổng.
Ràng buộc
0 ≤ số mặt hàng ≤ 1,000
1 ≤ quantity ≤ 1,000; 0 ≤ cents ≤ 10^6
Ví dụ
Đầu vào:
cents = [250, 375]
names = ["Tea", "Cake"]
quantities = [2, 1]
Kết quả mong đợi:
expected = ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
Đầu vào:
std::vector<long long> cents = {250, 375};
std::vector<std::string> names = {"Tea", "Cake"};
std::vector<long long> quantities = {2, 1};
Kết quả mong đợi:
std::vector<std::string> expected = {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
Đầu vào:
long[] cents = new long[] {250, 375};
string[] names = new string[] {"Tea", "Cake"};
long[] quantities = new long[] {2, 1};
Kết quả mong đợi:
string[] expected = new string[] {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
Giải thích
2 × 250 = 500 xu là 5.00 và 375 xu là 3.75; tổng là 875 xu: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"].
Đầu vào:
cents = [5]
names = ["Gum"]
quantities = [3]
Kết quả mong đợi:
expected = ["Gum x3 = 0.15", "Total = 0.15"]
Đầu vào:
std::vector<long long> cents = {5};
std::vector<std::string> names = {"Gum"};
std::vector<long long> quantities = {3};
Kết quả mong đợi:
std::vector<std::string> expected = {"Gum x3 = 0.15", "Total = 0.15"};
Đầu vào:
long[] cents = new long[] {5};
string[] names = new string[] {"Gum"};
long[] quantities = new long[] {3};
Kết quả mong đợi:
string[] expected = new string[] {"Gum x3 = 0.15", "Total = 0.15"};
Giải thích
3 × 5 = 15 xu, được viết là 0.15: ["Gum x3 = 0.15", "Total = 0.15"].
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Làm mọi phép tính bằng số xu nguyên.
Gợi ý 2
Tách xu thành đô la (cents / 100) và phần dư (cents % 100).
Gợi ý 3
Luôn in phần xu với hai chữ số, nên 5 xu là 0.05.
Độ phức tạp mong đợi
thời gian O(số mặt hàng), bộ nhớ phụ O(số mặt hàng)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.