GoogleCodeJam 2009 Round 1C A. All Your Base

先頭から順になるべく小さい数字を割り当て、割り当てた数字の個数を基数とする。
ただし、

  • 先頭に0はダメ
  • 基数は2以上、"1"という入力は2になる。
T = input()

for t in range(T):
    m = raw_input()
    d = {}
    v = []
    for c in m:
        if c not in d:
            d[c] = 1 if len(d)==0 else 0 if len(d)==1 else len(d)
        v += [d[c]]
    
    b = max(len(d),2)
    V = 0
    for x in v:
        V = V*b+x
    
    print "Case #%s: %s" % (t+1,V)