classCashier:def__init__(self,n:int,discount:int,products:List[int],prices:List[int]):self.i=0self.n=nself.discount=discountself.d={a:bfora,binzip(products,prices)}defgetBill(self,product:List[int],amount:List[int])->float:self.i=(self.i+1)%self.nx=sum(self.d[a]*bfora,binzip(product,amount))ifself.i==0:returnx-(self.discount*x)/100returnx# Your Cashier object will be instantiated and called as such:# obj = Cashier(n, discount, products, prices)# param_1 = obj.getBill(product,amount)
classCashier{privateinti;privateintn;privateintdiscount;privateMap<Integer,Integer>d;publicCashier(intn,intdiscount,int[]products,int[]prices){this.i=0;this.n=n;this.discount=discount;this.d=newHashMap<>();for(intj=0;j<products.length;j++){this.d.put(products[j],prices[j]);}}publicdoublegetBill(int[]product,int[]amount){this.i=(this.i+1)%this.n;doublex=0;for(intj=0;j<product.length;j++){x+=this.d.get(product[j])*amount[j];}if(this.i==0){returnx-(this.discount*x)/100.0;}returnx;}}/** * Your Cashier object will be instantiated and called as such: * Cashier obj = new Cashier(n, discount, products, prices); * double param_1 = obj.getBill(product,amount); */
classCashier{public:inti;intn;intdiscount;unordered_map<int,int>d;Cashier(intn,intdiscount,vector<int>&products,vector<int>&prices){this->i=0;this->n=n;this->discount=discount;for(intj=0;j<products.size();j++){d[products[j]]=prices[j];}}doublegetBill(vector<int>product,vector<int>amount){i=(i+1)%n;doublex=0;for(intj=0;j<product.size();j++){x+=d[product[j]]*amount[j];}if(i==0){returnx-(discount*x)/100.0;}returnx;}};/** * Your Cashier object will be instantiated and called as such: * Cashier* obj = new Cashier(n, discount, products, prices); * double param_1 = obj->getBill(product,amount); */
typeCashierstruct{iintnintdiscountintdmap[int]int}funcConstructor(nint,discountint,products[]int,prices[]int)Cashier{d:=make(map[int]int)fori:=0;i<len(products);i++{d[products[i]]=prices[i]}returnCashier{i:0,n:n,discount:discount,d:d}}func(this*Cashier)GetBill(product[]int,amount[]int)float64{this.i=(this.i+1)%this.nx:=0fori:=0;i<len(product);i++{x+=this.d[product[i]]*amount[i]}ifthis.i==0{returnfloat64(x)-float64(this.discount)*float64(x)/100.0}returnfloat64(x)}/** * Your Cashier object will be instantiated and called as such: * obj := Constructor(n, discount, products, prices); * param_1 := obj.GetBill(product,amount); */
classCashier{i:number;n:number;discount:number;d:Map<number,number>;constructor(n:number,discount:number,products:number[],prices:number[]){this.i=0;this.n=n;this.discount=discount;this.d=newMap();for(letj=0;j<products.length;j++){this.d.set(products[j],prices[j]);}}getBill(product:number[],amount:number[]):number{this.i=(this.i+1)%this.n;letx=0;for(letj=0;j<product.length;j++){x+=(this.d.get(product[j])||0)*amount[j];}if(this.i===0){returnx-(this.discount*x)/100;}returnx;}}/** * Your Cashier object will be instantiated and called as such: * var obj = new Cashier(n, discount, products, prices) * var param_1 = obj.getBill(product,amount) */
usestd::cell::Cell;usestd::collections::HashMap;structCashier{i:Cell<i32>,n:i32,discount:i32,d:HashMap<i32,i32>,}implCashier{fnnew(n:i32,discount:i32,products:Vec<i32>,prices:Vec<i32>)->Self{letmutd=HashMap::new();foriin0..products.len(){d.insert(products[i],prices[i]);}Cashier{i:Cell::new(0),n,discount,d,}}fnget_bill(&self,product:Vec<i32>,amount:Vec<i32>)->f64{letmutx=0i64;letmuti=self.i.get();i=(i+1)%self.n;self.i.set(i);forjin0..product.len(){x+=(self.d[&product[j]]asi64)*(amount[j]asi64);}ifi==0{returnxasf64-(self.discountasf64)*(xasf64)/100.0;}xasf64}}// Your Cashier object will be instantiated and called as such:// let obj = Cashier::new(n, discount, products, prices);// let ret_1: f64 = obj.get_bill(product, amount);