Problème
Un système de paie considère chaque employé comme un Employee avec une méthode WeeklyPay(), et chaque type d'employé la redéfinit.
Chaque employé s'écrit ainsi :
salaried <annual>: gagne annual / 52.hourly <rate> <hours>: gagne rate × hours pour les 40 premières heures et 1.5 × rate pour chaque heure au-delà de 40.commission <base> <rate> <sales>: gagne base + rate × sales.
Implémentez weekly_payroll(employees).
Entrée
employees: Les employés. Les nombres peuvent avoir des décimales.
Sortie
Retournez la paie hebdomadaire totale. Les réponses dans un intervalle de 1e-6 sont acceptées.
Contraintes
0 ≤ nombre d'employés ≤ 10,000
Tous les nombres sont entre 0 et 10^7 ; hours ≤ 100
Exemples
Entrée :
employees = ["salaried 52000", "hourly 20 45"]
Sortie attendue :
expected = 1950.0
Entrée :
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};
Sortie attendue :
double expected = 1950.0;
Entrée :
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};
Sortie attendue :
double expected = 1950.0;
Explication
L'employé salarié gagne 52000 / 52 = 1000. L'employé horaire gagne 20 × 40 + 30 × 5 = 950. Total 1950.
Entrée :
employees = ["commission 300 0.1 2500"]
Sortie attendue :
expected = 550.0
Entrée :
std::vector<std::string> employees = {"commission 300 0.1 2500"};
Sortie attendue :
double expected = 550.0;
Entrée :
string[] employees = new string[] {"commission 300 0.1 2500"};
Sortie attendue :
double expected = 550.0;
Explication
300 + 0.1 × 2500 = 550.
Comment l'aborder
Essayez d'abord seul, puis ouvrez les indices un par un.
Indice 1
Traitez chaque type d'employé avec sa propre formule.
Indice 2
Le salaire horaire est normal pour les 40 premières heures, puis 1,5 fois le taux.
Indice 3
Gardez les décimales : un salaire annuel divisé par 52 tombe rarement juste.
Complexité attendue
temps O(nombre d'employés), espace supplémentaire O(1)
Références
Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.