I am getting WA.Can anyone help me.
#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
LL i,j,k,t,n,m,a,d,s,z,p[4],h,MAX=4294967296LL;
LL gcd(LL a,LL b){ if(b==0) return a; return gcd(b,a%b);}
LL lcm(LL a,LL b){ return (a/gcd(a,b))*b;}
int main()
{
for(scanf("%lld",&t);t--;printf("%lld\n",m-n-s))
{
scanf("%lld %lld %lld %lld",&n,&m,&a,&d);
s=0;n--;
for(i=1;i<32;i++)
{
j=0;
if(i & 16)
p[j++]=a+4*d;
if(i & 8)
p[j++]=a+3*d;
if(i & 4)
p[j++]=a+2*d;
if(i & 2)
p[j++]=a+1*d;
if(i & 1)
p[j++]=a;
if(j==1)
{
s+=(m/p[0]-n/p[0]);
}
else
{ z=lcm(p[0],p[1]);
if(z<=MAX)
{
int ch=0;
for(k=2;k<j;k++)
{
z=lcm(z,p[k]);
if(z>MAX)
{ch=1;break;}
}
if(ch==0)
{
if(j&1) s+=(m/z-n/z);
else s-=(m/z-n/z);
}
}
}
}
}
return 0;
}