2015多校-MZL's xor

来源:互联网 发布:群星公主号 知乎 编辑:程序博客网 时间:2024/06/08 01:06

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)(1i,jn)The xor of an array B is defined as B1 xor B2...xor Bn
 

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,lA1=0,Ai=(Ai1m+z) mod l1m,z,l5105,n=5105
 

Output
For every test.print the answer.
 

Sample Input
23 5 5 76 8 8 9
 

Sample Output
1416

利用公式,把那些数找出来,注意i不一定小于j,那么会出现 5 2, 2 5,这种情况,异或后会变成0,那么最后的结果就是,对0 5 2,异或,最后乘于2,就是最终结果


#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^=(a[i]);        printf("%lld\n",ans*2);    }    return 0;}


0 0
原创粉丝点击