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)