This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<cstdio>
int main()
{
int tcn;
scanf("%d",&tcn);
while(tcn--)
{
long long K,P;
long long T,X,L,N;
scanf("%lld%lld%lld",&X,&L,&N);
X--;
N<<=1;
T=(L+N-1)/N;
K=T-1;
if(K>62)K=62;
if(T*N==L)
{
P=X%6;
X=(X/6)&((1LL<<K)-1);
for(T=0;X;X>>=1)T^=X&1;
if(T)
{
if(P==1||P==3)printf("%lld\n",((L+N-1)/N+1)*N);
else if(P==2||P==4)printf("%lld\n",((L+N-1)/N+1)*N+1);
else printf("%lld\n",L/N*N+1);
}
else
{
if(P==0||P==4)printf("%lld\n",((L+N-1)/N+1)*N);
else if(P==1||P==5)printf("%lld\n",((L+N-1)/N+1)*N+1);
else printf("%lld\n",L/N*N+1);
}
}
else
{
P=X%4;
X=(X/4)&((1LL<<K)-1);
for(T=0;X;X>>=1)T^=X&1;
if(T)
{
if(P==0||P==3)printf("%lld\n",(L+N-1)/N*N+1);
else printf("%lld\n",(L+N-1)/N*N);
}
else
{
if(P==1||P==2)printf("%lld\n",(L+N-1)/N*N+1);
else printf("%lld\n",(L+N-1)/N*N);
}
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |