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
/*
根据式子可以推出公式为所有值×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;
}
原文:http://www.cnblogs.com/zero-begin/p/4705998.html