Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. from functools import lru_cache
  2.  
  3. M = 2*3*5*7
  4. uglies = list(filter(lambda n: (int(n)%2 == 0 or
  5. int(n)%3 == 0 or
  6. int(n)%5 == 0 or
  7. int(n)%7 == 0),
  8. range(M)))
  9.  
  10. @lru_cache(maxsize=None)
  11. def f(line, k=None):
  12. if k == None:
  13. return sum([f(line, k) for k in uglies])
  14.  
  15. return sum([
  16. (1 if (int(line) % M) == k else 0),
  17.  
  18. sum([f(line[:p],
  19. (k-int(line[p:])) % M)
  20. for p in range(1, len(line))]),
  21.  
  22. sum([f(line[:p],
  23. (k+int(line[p:])) % M)
  24. for p in range(1, len(line))]),
  25. ])
  26.  
  27. if __name__ == '__main__':
  28. import sys
  29. data = sys.stdin.read().splitlines()[1:]
  30. case = 1
  31. for line in data:
  32. print('{:.0%}'.format(case/len(data)), file=sys.stderr)
  33. print('Case #{}: {}'.format(case,
  34. f(line)))
  35. case += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement