Advertisement
Guest User

Untitled

a guest
Apr 14th, 2013
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.58 KB | None | 0 0
  1. from bisect import bisect_right as ub
  2. l = [1, 4, 9, 121, 484]
  3. def pal1(s):
  4.     x = int(s[:-1] + s[::-1])
  5.     l.append(x*x)
  6.  
  7. def pal2(s):
  8.     x = int(s + s[::-1])
  9.     l.append(x*x)
  10.  
  11. def prepare(x, s):
  12.     if len(x) > 25:
  13.         return
  14.     for i in xrange(10):
  15.         y = x + chr(48 + i)
  16.         if 2*s + i*i < 10: pal1(y)
  17.         if 2*(s + i*i) < 10:
  18.             pal2(y)
  19.             prepare(y, s + i*i)
  20.  
  21. for i in xrange(1, 10):
  22.     prepare(str(i), i*i)
  23.  
  24. l2 = set(l)
  25. l = list(l2)
  26. l.sort()
  27.  
  28. T = int(raw_input())
  29. for t in xrange(T):
  30.     a,b = [int(x) for x in raw_input().split(' ')]
  31.     print "Case #%d: %d" % (t+1, ub(l, b) - ub(l, a-1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement