zoukankan      html  css  js  c++  java
  • HDU 5344 MZL's xor (水题)

    题意:给一个序列A,设序列B的中的元素有(Ai+Aj)(1≤i,j≤n),那么求B中所有元素的异或之和。而序列A是这样来的:A1=0,Ai=(Ai−1∗m+z) mod l。

    思路:相同的元素异或结果为0,所以可以去掉,也就是剩下A中的元素ai+ai那些而已。 小心乘法会溢出

     1 #include <bits/stdc++.h>
     2 #define INF 0x7f7f7f7f
     3 #define pii pair<int,int>
     4 #define LL long long
     5 using namespace std;
     6 const int N=5*1e5+100;
     7 
     8 
     9 int vect[N];
    10 
    11 int main()
    12 {
    13     //freopen("input.txt", "r", stdin);
    14     int t, n, m, z, l;
    15     cin>>t;
    16     while(t--)
    17     {
    18         scanf("%d %d %d %d",&n, &m, &z, &l);
    19         memset(vect, 0, sizeof(vect));
    20         LL pre=0, big=0;
    21         for(int i=1; i<n; i++)
    22         {
    23             vect[ (pre*m+z)%l ]++;
    24             pre=(pre*m+z)%l ;
    25             big=max(big, pre);
    26         }
    27         int ans=0;
    28         for(int i=1; i<N; i++)
    29         {
    30             if( vect[i]%2==1)
    31             {
    32                 ans^=(i+i);
    33             }
    34         }
    35         printf("%d
    ",ans);
    36 
    37     }
    38     return 0;
    39 }
    AC代码
  • 相关阅读:
    常用的算法
    2017前端面试题
    深入了解php opcode缓存原理
    0=='aa'的结果是true
    关于PHP浮点数之 intval((0.1+0.7)*10) 为什么是7
    linux grep命令
    linux awk命令详解
    PHP socket模拟POST请求
    shell编程之sed
    Shell脚本常用判断
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4703505.html
Copyright © 2011-2022 走看看