fork download
  1. # -*- coding: utf-8 -*-
  2. import sys, time
  3.  
  4.  
  5. def fnc(A, B, P):
  6. #t1 = time.time()
  7. zx = [0] * 1030
  8. for i in range(A,B+1):
  9. su, wu = 0, i
  10. while wu >0:
  11. #wu, tmp = divmod(wu, 10)
  12. su |= 1<<(wu%10);
  13. wu //=10
  14. zx[su] +=1
  15. pcnt = [0] * 1030;
  16. for i in range(1024):
  17. pcnt[i] = bin(i).count('1')
  18. ans = 0
  19. for i in range(1024):
  20. for j in range(i):
  21. #if bin(i|j).count('1') == P:
  22. if pcnt[i|j] == P:
  23. ans += zx[i] * zx[j]
  24. if pcnt[i] == P:
  25. ans += zx[i] * (zx[i]-1) >>1
  26. #print("%fs" %(time.time() - t1))
  27. return ans
  28.  
  29. for line in sys.stdin:
  30. A, B, P = map(int, line.rstrip().split())
  31. print("%d %d %d --> %d" %(A,B,P,fnc(A,B,P)))
  32.  
Success #stdin #stdout 0.05s 119552KB
stdin
8 11 2         
10 1000 5      
44 44444 4     
56785 113452 1 
102345 480713 6
1 500000 7     
stdout
8 11 2 --> 4
10 1000 5 --> 207480
44 44444 4 --> 33808313
56785 113452 1 --> 0
102345 480713 6 --> 15250362566
1 500000 7 --> 47440713600