Google Code Jam 2012 Qualification Round Problem C. Recycled Numbers

Recycled Numbers

全てのnとmの組み合わせについて、recycledかどうかを調べていると間に合わない。各mについて、recycledな数を作ってn<mであるものを数える。

for i in range(input()):A,B=map(int,raw_input().split());print "Case #%s: %s"%(i+1,sum(len([n for n in set(int(str(m)[i:]+str(m)[:i])for i in range(1,len(str(m))))if A<=n<m])for m in xrange(A,B+1)))