HDU5344——数学题——MZL's xor
2015-08-05 22:16
477 查看
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 as B1 xor B2...xor Bn
[align=left]Input[/align]
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
[align=left]Output[/align]
For every test.print the answer.
[align=left]Sample Input[/align]
2
3 5 5 7
6 8 8 9
[align=left]Sample Output[/align]
14
16
[align=left]Source[/align]
2015 Multi-University Training Contest 5
The xor of an array B is defined as B1 xor B2...xor Bn
[align=left]Input[/align]
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
[align=left]Output[/align]
For every test.print the answer.
[align=left]Sample Input[/align]
2
3 5 5 7
6 8 8 9
[align=left]Sample Output[/align]
14
16
[align=left]Source[/align]
2015 Multi-University Training Contest 5
/* 根据式子可以推出公式为所有值×2的异或和 */ /************************************************ Author :powatr Created Time :2015-8-5 22:08:30 File Name :b.cpp ************************************************/ #include <cstdio> #include <algorithm> #include <iostream> #include <sstream> #include <cstring> #include <cmath> #include <string> #include <vector> #include <queue> #include <deque> #include <stack> #include <list> #include <map> #include <set> #include <bitset> #include <cstdlib> #include <ctime> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 typedef long long ll; const int MAX = 1e6 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; ll a[MAX]; int main(){ int n, m, z, l; int 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; ll sum = 0; for(int i = 1; i <= n; i++) sum ^= 1ll*(a[i] << 1); printf("%I64d\n", sum); } return 0; }
相关文章推荐
- Java当中数组和容器之间的相互转换
- 初识linux 命令(一)
- 三维重建算法
- ArcGIS操作学习笔记
- 编译开发板提供的linux软件平台
- TESTNG重试、截屏、监听
- 读书笔记
- 曲面电视七月逆市飙升,借阅兵八月销量或再攀高峰
- leetcode 77: Combinations
- 前端工具整理
- PHP Object 转 Array
- 职责链模式
- VS2010编写WebService与在IIS的发布<之简单讲解>
- Struts2.3.4.1+Spring3.2.3+Hibernate4.1.9整合教程并测试成功
- 全局变量与局部变量在内存中的区别详细解析
- 【HDU】5343 MZL's Circle Zhou【后缀自动机】
- PHP获取当前页面的URL
- oracle学习3
- NGUI学习笔记(六):ScrollView、Grid和Table
- 二叉树的分层遍历