HDU 5344 多个数的和异或-思维-(位运算)

来源:互联网 发布:mac风扇一直转 编辑:程序博客网 时间:2024/05/19 14:17

题意:n个数的两两做和,然后异或

分析:

异或的性质:两个相同的数异或为0,所以Ai+Aj异或Aj+Ai等于0,所以最终结果就是Ai+Ai的异或

代码:

#include<stdio.h>long long t,n,m,z,l;long long a[1000005];int main(){    scanf("%I64d",&t);    while(t--){        scanf("%I64d%I64d%I64d%I64d",&n,&m,&z,&l);        a[1]=0;        long long ans=0;        long long i;        for(i=2;i<=n;i++){            a[i]=(a[i-1]*m+z)%l;            ans^=(a[i]*2);        }        printf("%I64d\n",ans);    }}


0 0