समस्या
पेरोल सिस्टम हर कर्मचारी को WeeklyPay() मेथड वाले Employee की तरह मानता है, और हर तरह का कर्मचारी इसे ओवरराइड करता है।
हर कर्मचारी ऐसे लिखा जाता है:
salaried <annual>: annual / 52 कमाता है।hourly <rate> <hours>: पहले 40 घंटों के लिए rate × hours और 40 से ऊपर हर घंटे के लिए 1.5 × rate कमाता है।commission <base> <rate> <sales>: base + rate × sales कमाता है।
weekly_payroll(employees) लिखें।
इनपुट
employees: कर्मचारी। संख्याओं में दशमलव हो सकता है।
आउटपुट
हफ़्ते का कुल वेतन लौटाएँ। 1e-6 तक के अंतर वाले जवाब स्वीकार हैं।
सीमाएँ
0 ≤ कर्मचारियों की संख्या ≤ 10,000
सभी संख्याएँ 0 से 10^7 के बीच; hours ≤ 100
उदाहरण
इनपुट:
employees = ["salaried 52000", "hourly 20 45"]
अपेक्षित आउटपुट:
expected = 1950.0
इनपुट:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};
अपेक्षित आउटपुट:
double expected = 1950.0;
इनपुट:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};
अपेक्षित आउटपुट:
double expected = 1950.0;
व्याख्या
वेतनभोगी कर्मचारी 52000 / 52 = 1000 कमाता है। घंटे वाला 20 × 40 + 30 × 5 = 950 कमाता है। कुल 1950।
इनपुट:
employees = ["commission 300 0.1 2500"]
अपेक्षित आउटपुट:
expected = 550.0
इनपुट:
std::vector<std::string> employees = {"commission 300 0.1 2500"};
अपेक्षित आउटपुट:
double expected = 550.0;
इनपुट:
string[] employees = new string[] {"commission 300 0.1 2500"};
अपेक्षित आउटपुट:
double expected = 550.0;
व्याख्या
300 + 0.1 × 2500 = 550।
कैसे हल करें
पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।
संकेत 1
हर तरह के कर्मचारी के लिए उसका अपना सूत्र इस्तेमाल करें।
संकेत 2
घंटे का वेतन पहले 40 घंटे सामान्य, फिर 1.5 गुना होता है।
संकेत 3
दशमलव रखें: सालाना वेतन को 52 से भाग देने पर पूर्णांक कम ही आता है।
अपेक्षित जटिलता
समय O(कर्मचारियों की संख्या), अतिरिक्त स्थान O(1)
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।