fork download
  1. from functools import cache
  2. t = int(input())
  3. for i in range(t):
  4. lst = input().split(" ")
  5. l = lst[0]
  6. r = lst[1]
  7. dic = {}
  8. @cache
  9. def f(i, flag, even, odd, nums):
  10. if (i >= len(nums)):
  11. if ((odd-even) == 1):
  12. return 1
  13. return 0
  14. take = 0
  15. if (i % 2 != 0):
  16. if(flag==True):
  17. for j in range(10):
  18. take += f(i+1, True, even, odd+j, nums)
  19. else:
  20. for j in range(int(nums[i])):
  21. take+=f(i+1, True, even, odd+j, nums)
  22. take+=f(i+1, flag, even, odd+int(nums[i]), nums)
  23. else:
  24. if(flag==True):
  25. for j in range(10):
  26. take += f(i+1, True, even+j, odd, nums)
  27. else:
  28. for j in range(int(nums[i])):
  29. take+=f(i+1, True, even+j, odd, nums)
  30. take+=f(i+1, flag, even+int(nums[i]), odd, nums)
  31. return take
  32. val1 = f(0, False, 0, 0, str(int(l)-1))
  33. val2 = f(0,False, 0, 0, r)
  34. val2 -= val1
  35. print(val2)
  36.  
Success #stdin #stdout 0.03s 9652KB
stdin
1 
1 100
stdout
9