Đề bài
Cộng tất cả giá trong giỏ hàng. Nếu tổng cộng ít nhất là discount_threshold, hãy giảm discount_percent phần trăm trên toàn bộ tổng.
Cài đặt hàm cart_total(prices, discount_threshold, discount_percent).
Đầu vào
prices: Giá của các mặt hàng. discount_threshold: Tổng giá trị để được áp dụng giảm giá. discount_percent: Phần trăm giảm giá.
Đầu ra
Trả về số tiền cần thanh toán.
Ràng buộc
0 ≤ số lượng phần tử ≤ 1.000; 0 ≤ mỗi giá trị ≤ 100.000; 0 ≤ discount_percent ≤ 100
Ví dụ
Đầu vào:
prices = [40, 35, 25]
discount_percent = 10
discount_threshold = 100
Kết quả mong đợi:
expected = 90.0
Đầu vào:
std::vector<long long> prices = {40, 35, 25};
long long discount_percent = 10;
long long discount_threshold = 100;
Kết quả mong đợi:
double expected = 90.0;
Đầu vào:
long[] prices = new long[] {40, 35, 25};
long discount_percent = 10;
long discount_threshold = 100;
Kết quả mong đợi:
double expected = 90.0;
Giải thích
Tổng là 100, đạt ngưỡng nên được giảm 10%: còn 90.
Đầu vào:
prices = [20, 30]
discount_percent = 10
discount_threshold = 100
Kết quả mong đợi:
expected = 50.0
Đầu vào:
std::vector<long long> prices = {20, 30};
long long discount_percent = 10;
long long discount_threshold = 100;
Kết quả mong đợi:
double expected = 50.0;
Đầu vào:
long[] prices = new long[] {20, 30};
long discount_percent = 10;
long discount_threshold = 100;
Kết quả mong đợi:
double expected = 50.0;
Giải thích
Tổng là 50, dưới 100 nên không được giảm giá: 50.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Trước hết hãy tính tổng giỏ hàng trước khi giảm giá.
Gợi ý 2
Chỉ áp dụng phần trăm giảm khi tổng đạt ngưỡng.
Gợi ý 3
Đảm bảo giảm giá trên toàn bộ đơn hàng, không phải từng món riêng lẻ.
Độ phức tạp mong đợi
thời gian O(n), bộ nhớ phụ O(1)
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.