#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/2;
if(K>62)K=62;
if(T*N==L)
{
P=X%6;
X=(X/6)&((1<<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)&((1<<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);
}
}
}
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
1088 KB |
Output is correct |
2 |
Correct |
0 ms |
1088 KB |
Output is correct |
3 |
Correct |
0 ms |
1088 KB |
Output is correct |
4 |
Correct |
0 ms |
1088 KB |
Output is correct |
5 |
Correct |
0 ms |
1088 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
1088 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
1088 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
0 ms |
1088 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
4 ms |
1088 KB |
Output is correct |
2 |
Incorrect |
8 ms |
1088 KB |
Output isn't correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
92 ms |
1088 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |