# 1352 Product of the Last K Numbers

Design an algorithm that accepts a stream of integers and retrieves the product of the last `k` integers of the stream.

Implement the `ProductOfNumbers` class:

• `ProductOfNumbers()` Initializes the object with an empty stream.
• `void add(int num)` Appends the integer `num` to the stream.
• `int getProduct(int k)` Returns the product of the last `k` numbers in the current list. You can assume that always the current list has at least `k` numbers.

The test cases are generated so that, at any time, the product of any contiguous sequence of numbers will fit into a single 32-bit integer without overflowing.

Example:

``````Input
[[],,,,,,,,,,]

Output
[null,null,null,null,null,null,20,40,0,null,32]

Explanation
ProductOfNumbers productOfNumbers = new ProductOfNumbers();
productOfNumbers.getProduct(2); // return 20. The product of the last 2 numbers is 5 * 4 = 20
productOfNumbers.getProduct(3); // return 40. The product of the last 3 numbers is 2 * 5 * 4 = 40
productOfNumbers.getProduct(4); // return 0. The product of the last 4 numbers is 0 * 2 * 5 * 4 = 0
• `0 <= num <= 100`
• `1 <= k <= 4 * 104`
• At most `4 * 104` calls will be made to add and `getProduct`.
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 `````` ``````class ProductOfNumbers: def __init__(self): self.arr =  def add(self, num: int) -> None: if num == 0: self.arr =  return self.arr.append(self.arr[-1] * num) def getProduct(self, k: int) -> int: if k > len(self.arr) - 1: return 0 return self.arr[-1] // self.arr[-k-1] # Your ProductOfNumbers object will be instantiated and called as such: # obj = ProductOfNumbers() # obj.add(num) # param_2 = obj.getProduct(k)``````