mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
55 lines
3.8 KiB
HTML
55 lines
3.8 KiB
HTML
<p>超市里正在举行打折活动,每隔 <code>n</code> 个顾客会得到 <code>discount</code> 的折扣。</p>
|
||
|
||
<p>超市里有一些商品,第 <code>i</code> 种商品为 <code>products[i]</code> 且每件单品的价格为 <code>prices[i]</code> 。</p>
|
||
|
||
<p>结账系统会统计顾客的数目,每隔 <code>n</code> 个顾客结账时,该顾客的账单都会打折,折扣为 <code>discount</code> (也就是如果原本账单为 <code>x</code> ,那么实际金额会变成 <code>x - (discount * x) / 100</code> ),然后系统会重新开始计数。</p>
|
||
|
||
<p>顾客会购买一些商品, <code>product[i]</code> 是顾客购买的第 <code>i</code> 种商品, <code>amount[i]</code> 是对应的购买该种商品的数目。</p>
|
||
|
||
<p>请你实现 <code>Cashier</code> 类:</p>
|
||
|
||
<ul>
|
||
<li><code>Cashier(int n, int discount, int[] products, int[] prices)</code> 初始化实例对象,参数分别为打折频率 <code>n</code> ,折扣大小 <code>discount</code> ,超市里的商品列表 <code>products</code> 和它们的价格 <code>prices</code> 。</li>
|
||
<li><code>double getBill(int[] product, int[] amount)</code> 返回账单的实际金额(如果有打折,请返回打折后的结果)。返回结果与标准答案误差在 <code>10^-5</code> 以内都视为正确结果。</li>
|
||
</ul>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre><strong>输入</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>输出</strong>
|
||
[null,500.0,4000.0,800.0,4000.0,4000.0,7350.0,2500.0]
|
||
<strong>解释</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]); // 返回 500.0, 账单金额为 = 1 * 100 + 2 * 200 = 500.
|
||
cashier.getBill([3,7],[10,10]); // 返回 4000.0
|
||
cashier.getBill([1,2,3,4,5,6,7],[1,1,1,1,1,1,1]); // 返回 800.0 ,账单原本为 1600.0 ,但由于该顾客是第三位顾客,他将得到 50% 的折扣,所以实际金额为 1600 - 1600 * (50 / 100) = 800 。
|
||
cashier.getBill([4],[10]); // 返回 4000.0
|
||
cashier.getBill([7,3],[10,10]); // 返回 4000.0
|
||
cashier.getBill([7,5,3,1,6,4,2],[10,10,10,9,9,9,7]); // 返回 7350.0 ,账单原本为 14700.0 ,但由于系统计数再次达到三,该顾客将得到 50% 的折扣,实际金额为 7350.0 。
|
||
cashier.getBill([2,3,5],[5,3,2]); // 返回 2500.0
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>1 <= n <= 10^4</code></li>
|
||
<li><code>0 <= discount <= 100</code></li>
|
||
<li><code>1 <= products.length <= 200</code></li>
|
||
<li><code>1 <= products[i] <= 200</code></li>
|
||
<li><code>products</code> 列表中 <strong>不会</strong> 有重复的元素。</li>
|
||
<li><code>prices.length == products.length</code></li>
|
||
<li><code>1 <= prices[i] <= 1000</code></li>
|
||
<li><code>1 <= product.length <= products.length</code></li>
|
||
<li><code>product[i]</code> 在 <code>products</code> 出现过。</li>
|
||
<li><code>amount.length == product.length</code></li>
|
||
<li><code>1 <= amount[i] <= 1000</code></li>
|
||
<li>最多有 <code>1000</code> 次对 <code>getBill</code> 函数的调用。</li>
|
||
<li>返回结果与标准答案误差在 <code>10^-5</code> 以内都视为正确结果。</li>
|
||
</ul>
|