10.18T1 打表

DLZ耍蛇

ProblemBackground

DLZ一到机房,所有Dalao便都看着他笑,有的叫道,“DLZ,你又要耍蛇了!” 他不回答,跑到全班面前,“这是我从印度进口的灵蛇。”便从兜里掏出九条大蛇。他 们又故意的高声嚷道,“你一定又被石锤了!”DLZ睁大眼睛说,“你怎么这样凭空污 人清白……”“什么清白?我前天亲眼见你在LH面前耍蛇,被吊着打。”DLZ便涨红 了脸,额上的青筋条条绽出,争辩道,“耍蛇被打能叫被锤吗……耍蛇!……读书人的事, 能算石锤么?”接连便是难懂的话,什么“苟币LH”,什么“吃土”之类,引得众人 都哄笑起来:机房内外充满了快活的空气。

Problem Discrioption

DLZ的蛇可被分为若干段,第i段蛇的灵力为iDLZ使用的是传统耍蛇法,他每 一次耍蛇从LR的一段,耍蛇之后,蛇会减少LR的灵力和。由于某些特殊原因, 灵力是用异或求和的。如果不能及时补充,蛇就挂了,DLZ数学太菜了,为了拯救他的 蛇,他向你求助。

Input

两个整数LRL<R

Output

一个整数表示LR的灵力和

SampleInput

2 7

SampleInput

1

 

Data Scale

测试点编号

数据规模

1~4

L,R1e7

5~7

R-L1e7

8~10

L,r1e18

 

 

 

 

记得我前面的博客的ZYH的XOR吗,一个道理

不过一个结论是[L,R]=[1,R]^[1,L-1]

然后就O(1)了

code:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 long long cal(long long a){return a%4==1?1:((a%4==2)?a+1:(a%4==0?a:0));}
 5 int main(){
 6     freopen("snake.in","r",stdin);
 7     freopen("snake.out","w",stdout);
 8     long long l,r;cin>>l>>r;
 9     cout<<(cal(r)^cal(l-1));
10     return 0;
11 }

over

posted @ 2018-10-18 12:22  saionjisekai  阅读(27)  评论(0编辑  收藏  举报