โจทย์
เงินมักเก็บเป็นจำนวนเซนต์เต็มเพื่อเลี่ยงข้อผิดพลาดจากการปัดเศษ และจะจัดรูปแบบเป็นดอลลาร์ตอนแสดงผลเท่านั้น
สำหรับแต่ละรายการ ให้เขียนบรรทัด <name> x<quantity> = <amount> โดย amount = quantity × ราคาเป็นเซนต์ หลังรายการทั้งหมด ให้เขียน Total = <amount> เป็นผลรวมของทุกบรรทัด
จัดรูปแบบทุกจำนวนเงินเป็นดอลลาร์ จุด และเซนต์สองหลักพอดี เช่น 5 → 0.05 และ 1250 → 12.50
จงเขียน format_invoice(names, quantities, cents)
อินพุต
names, quantities, cents: ลิสต์ที่สอดคล้องกันซึ่งอธิบายแต่ละรายการ
เอาต์พุต
คืนค่าบรรทัดของรายการ ตามด้วยบรรทัดยอดรวม
เงื่อนไข
0 ≤ จำนวนสินค้า ≤ 1,000
1 ≤ quantity ≤ 1,000; 0 ≤ cents ≤ 10^6
ตัวอย่าง
อินพุต:
cents = [250, 375]
names = ["Tea", "Cake"]
quantities = [2, 1]
ผลลัพธ์ที่คาดหวัง:
expected = ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
อินพุต:
std::vector<long long> cents = {250, 375};
std::vector<std::string> names = {"Tea", "Cake"};
std::vector<long long> quantities = {2, 1};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
อินพุต:
long[] cents = new long[] {250, 375};
string[] names = new string[] {"Tea", "Cake"};
long[] quantities = new long[] {2, 1};
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"};
คำอธิบาย
2 × 250 = 500 เซนต์คือ 5.00 และ 375 เซนต์คือ 3.75 ยอดรวมคือ 875 เซนต์: ["Tea x2 = 5.00", "Cake x1 = 3.75", "Total = 8.75"]
อินพุต:
cents = [5]
names = ["Gum"]
quantities = [3]
ผลลัพธ์ที่คาดหวัง:
expected = ["Gum x3 = 0.15", "Total = 0.15"]
อินพุต:
std::vector<long long> cents = {5};
std::vector<std::string> names = {"Gum"};
std::vector<long long> quantities = {3};
ผลลัพธ์ที่คาดหวัง:
std::vector<std::string> expected = {"Gum x3 = 0.15", "Total = 0.15"};
อินพุต:
long[] cents = new long[] {5};
string[] names = new string[] {"Gum"};
long[] quantities = new long[] {3};
ผลลัพธ์ที่คาดหวัง:
string[] expected = new string[] {"Gum x3 = 0.15", "Total = 0.15"};
คำอธิบาย
3 × 5 = 15 เซนต์ เขียนเป็น 0.15: ["Gum x3 = 0.15", "Total = 0.15"]
แนวทางการแก้
ลองทำเองก่อน แล้วค่อยเปิดคำใบ้ทีละข้อ
คำใบ้ 1
คำนวณทุกอย่างเป็นจำนวนเซนต์เต็ม
คำใบ้ 2
แยกเซนต์เป็นดอลลาร์ (cents / 100) และเศษ (cents % 100)
คำใบ้ 3
แสดงเซนต์เป็นสองหลักเสมอ 5 เซนต์จึงเป็น 0.05
ความซับซ้อนที่คาดหวัง
เวลา O(จำนวนสินค้า), หน่วยความจำเพิ่ม O(จำนวนสินค้า)
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน