Problem Statement  
Hamming numbers were first introduced as an exercise by Richard W. Hamming, the creator of Hamming codes. By definition, a Hamming number is a positive number that can be factored as the product of some arbitrarily chosen factors. For example, if the chosen factors = {2,3,5} then 90 = 2*3*3*5 is a Hamming number, but 70 = 2*5*7 is not because it is also divisible by 7. Note that 1 is always a Hamming number no matter what the chosen factors are. Given a int[] of the chosen factors and an int n, return the nth smallest Hamming number that can be obtained with these factors. n is 1based, so the first number occurs when n = 1. If the result is above 2147483647 (32 bit signed integer maximum) then return 1.  
Definition  
 
Constraints  
  factors will contain between 1 and 50 elements inclusive.  
  Each element in factors will be between 2 and 300 inclusive.  
  n will be between 1 and 100000 inclusive.  
Examples  
0)  
 
1)  
 
2)  
 
3)  
 
4)  
