mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
59 lines
4.5 KiB
HTML
59 lines
4.5 KiB
HTML
<p>There is a supermarket that is frequented by many customers. The products sold at the supermarket are represented as two parallel integer arrays <code>products</code> and <code>prices</code>, where the <code>i<sup>th</sup></code> product has an ID of <code>products[i]</code> and a price of <code>prices[i]</code>.</p>
|
|
|
|
<p>When a customer is paying, their bill is represented as two parallel integer arrays <code>product</code> and <code>amount</code>, where the <code>j<sup>th</sup></code> product they purchased has an ID of <code>product[j]</code>, and <code>amount[j]</code> is how much of the product they bought. Their subtotal is calculated as the sum of each <code>amount[j] * (price of the j<sup>th</sup> product)</code>.</p>
|
|
|
|
<p>The supermarket decided to have a sale. Every <code>n<sup>th</sup></code> customer paying for their groceries will be given a <strong>percentage discount</strong>. The discount amount is given by <code>discount</code>, where they will be given <code>discount</code> percent off their subtotal. More formally, if their subtotal is <code>bill</code>, then they would actually pay <code>bill * ((100 - discount) / 100)</code>.</p>
|
|
|
|
<p>Implement the <code>Cashier</code> class:</p>
|
|
|
|
<ul>
|
|
<li><code>Cashier(int n, int discount, int[] products, int[] prices)</code> Initializes the object with <code>n</code>, the <code>discount</code>, and the <code>products</code> and their <code>prices</code>.</li>
|
|
<li><code>double getBill(int[] product, int[] amount)</code> Returns the final total of the bill with the discount applied (if any). Answers within <code>10<sup>-5</sup></code> of the actual value will be accepted.</li>
|
|
</ul>
|
|
|
|
<p> </p>
|
|
<p><strong class="example">Example 1:</strong></p>
|
|
|
|
<pre>
|
|
<strong>Input</strong>
|
|
["Cashier","getBill","getBill","getBill","getBill","getBill","getBill","getBill"]
|
|
[[3,50,[1,2,3,4,5,6,7],[100,200,300,400,300,200,100]],[[1,2],[1,2]],[[3,7],[10,10]],[[1,2,3,4,5,6,7],[1,1,1,1,1,1,1]],[[4],[10]],[[7,3],[10,10]],[[7,5,3,1,6,4,2],[10,10,10,9,9,9,7]],[[2,3,5],[5,3,2]]]
|
|
<strong>Output</strong>
|
|
[null,500.0,4000.0,800.0,4000.0,4000.0,7350.0,2500.0]
|
|
<strong>Explanation</strong>
|
|
Cashier cashier = new Cashier(3,50,[1,2,3,4,5,6,7],[100,200,300,400,300,200,100]);
|
|
cashier.getBill([1,2],[1,2]); // return 500.0. 1<sup>st</sup> customer, no discount.
|
|
// bill = 1 * 100 + 2 * 200 = 500.
|
|
cashier.getBill([3,7],[10,10]); // return 4000.0. 2<sup>nd</sup> customer, no discount.
|
|
// bill = 10 * 300 + 10 * 100 = 4000.
|
|
cashier.getBill([1,2,3,4,5,6,7],[1,1,1,1,1,1,1]); // return 800.0. 3<sup>rd</sup> customer, 50% discount.
|
|
// Original bill = 1600
|
|
// Actual bill = 1600 * ((100 - 50) / 100) = 800.
|
|
cashier.getBill([4],[10]); // return 4000.0. 4<sup>th</sup> customer, no discount.
|
|
cashier.getBill([7,3],[10,10]); // return 4000.0. 5<sup>th</sup> customer, no discount.
|
|
cashier.getBill([7,5,3,1,6,4,2],[10,10,10,9,9,9,7]); // return 7350.0. 6<sup>th</sup> customer, 50% discount.
|
|
// Original bill = 14700, but with
|
|
// Actual bill = 14700 * ((100 - 50) / 100) = 7350.
|
|
cashier.getBill([2,3,5],[5,3,2]); // return 2500.0. 7<sup>th</sup> customer, no discount.
|
|
</pre>
|
|
|
|
<p> </p>
|
|
<p><strong>Constraints:</strong></p>
|
|
|
|
<ul>
|
|
<li><code>1 <= n <= 10<sup>4</sup></code></li>
|
|
<li><code>0 <= discount <= 100</code></li>
|
|
<li><code>1 <= products.length <= 200</code></li>
|
|
<li><code>prices.length == products.length</code></li>
|
|
<li><code>1 <= products[i] <= 200</code></li>
|
|
<li><code>1 <= prices[i] <= 1000</code></li>
|
|
<li>The elements in <code>products</code> are <strong>unique</strong>.</li>
|
|
<li><code>1 <= product.length <= products.length</code></li>
|
|
<li><code>amount.length == product.length</code></li>
|
|
<li><code>product[j]</code> exists in <code>products</code>.</li>
|
|
<li><code>1 <= amount[j] <= 1000</code></li>
|
|
<li>The elements of <code>product</code> are <strong>unique</strong>.</li>
|
|
<li>At most <code>1000</code> calls will be made to <code>getBill</code>.</li>
|
|
<li>Answers within <code>10<sup>-5</sup></code> of the actual value will be accepted.</li>
|
|
</ul>
|