Problem Statement
    
You have uncovered the hashing algorithm for passwords at a particular site. This hashing algorithm is brutally simple, as shown by the code below:
   long long h = 0 ;
   for (char c in s)
      h = (h * 37 + c) % (2^32) ;
   return h ;
(A long long here is large enough so the arithmetic does not overflow.) You believe that most customers are using passwords composed of just uppercase letters (A-Z). Given an integer hash code, you wish to return the shortest possible password consisting of only uppercase letters that hashes to that value. If there is more than one such password, return the one that comes first alphabetically. The letter A has an ASCII code of 65, and the letter Z has an ASCII code of 90.
Definition
    
Class:
ReverseHash
Method:
unhash
Parameters:
int
Returns:
string
Method signature:
string unhash(int hashCode)
(be sure your method is public)
    

Constraints
-
hashCode will be between 1 and 2,147,483,647, inclusive.
Examples
0)

    
65
Returns: "A"
The hash code of a single-character string is just the ASCII value of that character.
1)

    
97
Returns: "FGSHWIA"
The character coded at ASCII 97 is 'a', but we must find a word consisting of only uppercase letters to return.
2)

    
129666101
Returns: "CODER"

3)

    
1378690842
Returns: "PASSWD"
This is not the best password in the world.