fork download
  1. import sys
  2. def gcd(a,b):
  3. if b==0:
  4. return a
  5. return gcd(b,a%b)
  6. def lcm(a,b) :
  7. return (a*b)/gcd(a,b)
  8. t=int(input())
  9. p=list();
  10. for case in range(0,t):
  11. n,m,a,d = map(int,sys.stdin.readline().split());
  12. s=0
  13. n=n-1
  14. for i in range(1,32):
  15. j=0
  16. for h in range(4,-1,-1):
  17. if i&(1<<h) :
  18. p.insert(j,a+h*d)
  19. j=j+1
  20. if j==1 :
  21. s+=(m/p[0]-n/p[0])
  22. else :
  23. z=lcm(p[0],p[1])
  24. for k in range(2,j):
  25. z=lcm(z,p[k])
  26. if (j&1) :
  27. s+=(m/z-n/z)
  28. else:
  29. s-=(m/z-n/z)
  30. print(int(m-n-s+.5));
  31.  
Success #stdin #stdout 0.02s 4656KB
stdin
3
1 10 2 2
20 100 3 3
100 1000 4 5 
stdout
5
54
543