[多校]MZL's xor
来源:互联网 发布:群星公主号 知乎 编辑:程序博客网 时间:2024/06/07 23:38
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 (Ai +Aj )(1≤i,j≤n )The xor of an array B is defined asB1 xorB2 ...xorBn
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 A1=0 ,Ai=(Ai−1∗m+z) mod l 1≤m,z,l≤5∗105 ,n=5∗105
Output
For every test.print the answer.
Sample Input
23 5 5 76 8 8 9
Sample Output
1416
xor为“异或”,“异或”的规律为,1^1=0,0^0=0,1^0=1,0^1=1。这道题的题意是把A数组数据全部递推得到后,将Ai和Aj两两相加(注意!题中没说j>i或i>j。即存在A1+A2和A2+A1的情况)而Ai+Aj和Aj+Ai为相同值,相同值的异或为0,0对于其他值异或,值不会有改变。所以最后异或的数据只有当i==j时的数。(对于研究了一个小时为什么只需要对i==j情况异或的我,知道了真相以后震惊了)
#include <iostream>#include <cstdio>using namespace std;long long a[600010];int main(){ int n,m,z,l,t; scanf("%d",&t); while(t--) { scanf("%d%d%d%d",&n,&m,&z,&l); a[1]=0; for(int i=2; i<=n; i++) { a[i]=(a[i-1]*m+z)%l; } long long ans=a[1]+a[1]; for(int i=2;i<=n;i++) ans^=(2*a[i]); printf("%lld\n",ans); } return 0;}
0 0
- [多校]MZL's xor
- 2015多校-MZL's xor
- HDU5344 MZL's xor
- HDU 5344 MZL's xor
- HDU 5344 MZL's xor
- hdu 5344 MZL's xor
- hdu 5344 MZL's xor
- hdu 5334 MZL's xor
- HDU 5344 MZL's xor
- Hdu-5344 MZL's xor
- HDU 5344 MZL's xor
- HDU 5344(2015多校5)-MZL's xor(水题)
- HDU 5344 多校赛1002 MZL's xor
- HDOJ 5344 MZL's xor 【math】
- hdu 5344 MZL's xor(水)
- HDU 5344 MZL's xor(水题)
- Contest 5 1002 MZL's xor【math】
- 其他-HDOJ-5344-MZL's xor
- 机器学习05(logistic回归)
- openwrt 安装nodogsplash
- android 数据库操作 GreenDAO 第三方开源项目
- jquery 提交表单
- Avoid The Lakes
- [多校]MZL's xor
- 2015多校-MZL's xor
- Ubuntu 14.04下NFS安装配置
- hdu5316 线段树
- UVaOJ 572 Oil Deposits 简单的DFS遍历
- glib简介入门
- c++线性存储
- [LeetCode]Longest Palindromic Substring
- Android获取两个日期之间间隔的天数