Trung bình 0 đã giải Tỷ lệ chấp nhận 0%

Bảng lương hàng tuần

Tính tổng lương một tuần cho nhân viên lương cố định, theo giờ và hoa hồng, mỗi loại theo quy tắc riêng.

Bạn sẽ học được gì

  • Tính lương theo quy tắc của từng loại nhân viên
  • Trả lương làm thêm cho phần vượt 40 giờ
  • Cộng các số thập phân chính xác

Đề bài

Xem bản gốc (English)

Hệ thống tính lương coi mọi nhân viên là một Employee có phương thức WeeklyPay(), và mỗi loại nhân viên ghi đè phương thức đó.

Mỗi nhân viên được viết như sau:

  • salaried <annual>: nhận annual / 52.
  • hourly <rate> <hours>: nhận rate × hours cho 40 giờ đầu và 1.5 × rate cho mỗi giờ vượt quá 40.
  • commission <base> <rate> <sales>: nhận base + rate × sales.

Hãy viết weekly_payroll(employees).

Đầu vào

employees: Các nhân viên. Số có thể có phần thập phân.

Đầu ra

Trả về tổng lương trong tuần. Đáp án sai lệch không quá 1e-6 được chấp nhận.

Ràng buộc

0 ≤ số nhân viên ≤ 10,000

Mọi số nằm trong khoảng 0 đến 10^7; hours ≤ 100

Ví dụ

Ví dụ 1
Đầu vào:
employees = ["salaried 52000", "hourly 20 45"]

Kết quả mong đợi:
expected = 1950.0
Đầu vào:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};

Kết quả mong đợi:
double expected = 1950.0;
Đầu vào:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};

Kết quả mong đợi:
double expected = 1950.0;

Giải thích

Nhân viên lương cố định nhận 52000 / 52 = 1000. Nhân viên theo giờ nhận 20 × 40 + 30 × 5 = 950. Tổng 1950.

Ví dụ 2
Đầu vào:
employees = ["commission 300 0.1 2500"]

Kết quả mong đợi:
expected = 550.0
Đầu vào:
std::vector<std::string> employees = {"commission 300 0.1 2500"};

Kết quả mong đợi:
double expected = 550.0;
Đầu vào:
string[] employees = new string[] {"commission 300 0.1 2500"};

Kết quả mong đợi:
double expected = 550.0;

Giải thích

300 + 0.1 × 2500 = 550.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Xử lý mỗi loại nhân viên bằng công thức riêng.

Gợi ý 2

Lương theo giờ tính bình thường cho 40 giờ đầu và 1.5 lần sau đó.

Gợi ý 3

Giữ phần thập phân: lương năm chia 52 hiếm khi ra số nguyên.

Độ phức tạp mong đợi

thời gian O(số nhân viê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.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.