MZL's xor

MZL's xor

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other)
Total Submission(s) : 1   Accepted Submission(s) : 1
Problem Description
MZL loves xor very much.Now he gets an array A.The length of A is n.He wants to know the xor of all ($A_i$+$A_j$)($1\leq i,j \leq n$)
The xor of an array B is defined as $B_1$ xor $B_2$...xor $B_n$
 

 

Input
Multiple test cases, the first line contains an integer T(no more than 20), indicating the number of cases. Each test case contains four integers:$n$,$m$,$z$,$l$ $A_1=0$,$A_i=(A_{i-1}*m+z)$ $mod$ $l$ $1\leq m,z,l \leq 5*10^5$,$n=5*10^5$
 

 

Output
For every test.print the answer.
 

 

Sample Input
2 3 5 5 7 6 8 8 9
 

 

Sample Output
14 16
 题解:就是A数组可以得出,B数组是A[i]+A[j]组成的数组让求B1^B2^.......^Bn的值;
代码:
 1 #include<stdio.h>
 2 #include<string.h>
 3 const int MAXN=5*1e5+10;
 4 long long A[MAXN],B[MAXN];
 5 int main(){
 6     int T,n,m,z,l;
 7     scanf("%d",&T);
 8     while(T--){
 9         scanf("%d%d%d%d",&n,&m,&z,&l);
10         A[0]=0;
11         long long ans=0;
12         for(int i=1;i<n;i++){
13             A[i]=(A[i-1]%l*m%l+z%l)%l;
14             B[i]=A[i]+A[i];//因为相同的元素异或结果为0;所以A[i]+A[j] | A[j]+A[i]等于0;只剩相同元素之和的异或; 
15             ans^=B[i];
16         }
17         printf("%lld\n",ans);
18     }
19     return 0;
20 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
void Cin(Books *abs){ int i = 0; int g; cout<<"添加几个课程?"<<endl; xiuf(&g); if(abs->number + g > 5){ cout<<"太多了,进不去了!!!"<<endl; system("pause"); system("cls"); }else{ for(i=0;i<g;i++){ abs->number++; cout<<"输入课程名字"<<endl; string mzl; cin>>mzl; abs->ClassArray[abs->number].name = mzl; cout<<"输入课程编号"<<endl; string numberl; cin>>numberl; abs->ClassArray[abs->number].number = numberl; cout<<"输入课程性质"<<endl; string forml; cin>>forml; abs->ClassArray[abs->number].form = forml; cout<<"输入课程学分"<<endl; int gradel; xiuf(&gradel); abs->ClassArray[abs->number].grade = gradel; cout<<"输入课程学时"<<endl; int timel; xiuf(&timel); abs->ClassArray[abs->number].time = timel; cout<<"输入课程授课学时"<<endl; int finishtimel; xiuf(&finishtimel); abs->ClassArray[abs->number].finishtime = finishtimel; cout<<"输入课程实验学时"<<endl; int experiencel; xiuf(&experiencel); abs->ClassArray[abs->number].experience = experiencel; cout<<"添加成功"<<endl; abs->ClassArray[abs->number].people = abs->number *10; system("pause"); system("cls"); ofstream out("kc.txt",ios::app);//app表示每次操作前均定位到文件末尾 if(out.fail()){ cout<<"error\n"; } out<<"课程名字:"<<mzl<<endl; out<<"课程编号:"<<numberl<<endl; out<<"课程性质:"<<forml<<endl; out<<"课程学分:"<<gradel<<endl; out<<"课程学时:"<<timel<<endl; out<<"课程授课学时:"<<finishtimel<<endl; out<<"课程实验学时:"<<experiencel<<endl; out.close(); }} }
06-13

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值