Sum of xor jdoj-2160

    题目大意:给你一个n,求1^2^...^n。

    注释:$n<=10^{18}$。

      想法:第一道异或的题。先来介绍一下什么是异或。a^b表示分别将两个数变成二进制后,从左到右按位取异或。两个异或字符,相同为0,不同为1。接下来,我们来证明异或的一些性质。

        1.异或单位独立性。两个数的二进制,如果位数不够按位补全。我们显然可以证明,每一位上的异或显然独立的。

        2.a^0=a,a^a=0。显然。

        3.异或交换律。我们对于三个数来进行考虑。不妨设为a,b,c。我们只需证明a^b^c=a^(b^c)。显然,对于三个数的每一位来讲,必定有两个数相等(鸽巢原理)。所以,只剩下另一个数。如果相等的两个数是0,或1,我们都可以借助异或的第一条性质进行言简意赅的证明。

        4.异或的诡异性质。任意的a属于$N^+$,都有4a^(4a+1)^(4a+2)^(4a+3)=0。有第一条即可证明。这是显然的,因为这四个数的除去最后两位都是一样的,有第一条性质,在前面去异或的时候都是0。然后,再有第2条性质,就可以证明。

        异或的应用:假设有一段序列。所有的数都出现了两次,只有一个数出现了一次。全取异或,由第二条性质,证毕。

        然后,关于这道题,我们发现,由第4条性质和第二条性质的前半部分,我们可以将这个异或和转化为不大于n的4的倍数到n的异或和。显然,迎刃而解。

      最后,附上丑陋的代码... ...

 #include <iostream>
#include <cstdio>
typedef long long ll;
using namespace std;
int main()
{
ll n;
scanf("%lld",&n);
ll ans=;
for(ll i=n/*;i<=n;i++)
{
ans^=i;
}
printf("%lld\n",ans);
return ;
}

    小结:既然n是long long那么i也必须是long long。

Sum of xor的更多相关文章

  1. UVALive8518 Sum of xor sum

    题目链接:https://vjudge.net/problem/UVALive-8518 题目大意: 给定一个长度为 $N$ 的数字序列 $A$,进行 $Q$ 次询问,每次询问 $[L,R]$,需要回 ...

  2. SOJ 4309 Sum of xor 异或/思维

    Source ftiasch 解题思路: 本题的题解有参考这里,但是那篇年代太久远,讲的也不甚清晰,所以可能会对很多新手造成困扰,所以又写了这一篇. 亦或有很多规律,本题使用到的是n^(n+1)=1, ...

  3. Sum vs XOR

    https://www.hackerrank.com/contests/hourrank-13/challenges/arthur-and-coprimes 要求找出所有x <= n   x + ...

  4. AtCoder ABC 129E Sum Equals Xor

    题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_e 题目大意 给定一个二进制表示的数 L,问有多少对自然数 (a, b) 满足 $a + b ...

  5. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)

    题目链接:http://codeforces.com/contest/703/problem/D 给你n个数,m次查询,每次查询问你l到r之间出现偶数次的数字xor和是多少. 我们可以先预处理前缀和X ...

  6. [USACO]6.1.3 cow xor(二进制+Trie)

    题意:给你一个序列(n<=100000),求出一个连续的子序列[i,j]使得ai xor ai+1 xor…… xor aj最大,求出这个最大值(其中每个数<=2^21) 分析:题目和求一 ...

  7. codeforces 242E. XOR on Segment 线段树

    题目链接 给n个数, 两种操作, 一种是求区间内的数的和, 一种是将区间内的数异或x. 异或x没有什么思路, 单个异或肯定超时, 区间异或也没有办法做....后来才知道可以按位建线段树, 这样建20棵 ...

  8. ACDream - Xor pairs

    先上题目: Xor pairs Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Sub ...

  9. HDU 3397 Sequence operation

    题目:下列操作 Change operations:0 a b change all characters into '0's in [a , b]1 a b change all character ...

随机推荐

  1. 【linux】php安装 出现Sorry, I cannot run apxs. ***错误解决方法

    首先, 通过错误提示, 我们得知"I cannot run apxs". 我一直以为是apxs安装有问题, 但找了很久仍未得到合理的解释和解决方法. 于是我直接运行"/u ...

  2. Java利用递归算法统计1-6的数组排列组合数

    Java利用递归算法统计1-6的数组排列组合数 1.设计源码 /** * @Title:ArrayCombination.java * @Package:com.you.data * @Descrip ...

  3. zTree实现地市县三级级联DAO接口

    zTree实现地市县三级级联DAO接口 ProvinceDao.java: /** * @Title:ProvinceDao.java * @Package:com.gwtjs.dao * @Desc ...

  4. Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be ope

    1.错误描述 java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.tes ...

  5. .Net学习计划

    .Net培训 第一部分:.Net基础        .Net基础:数据类型.变量.运算符.分支结构.循环结构.方法.反编译器.递归.递归算法的非递归优化:        面向对象:异常.封装继承多态. ...

  6. linux之软件安装

    一.软件包管理简介 1)软件包分类 1.源码包 优点: 开源, 如果有足够的能力, 可以修改源代码 可以自由选择所需的功能 软件是编译安装, 所以更加适合自己的系统, 更加稳定也效率更高 卸载方便 缺 ...

  7. 【BZOJ2442】修建草坪(动态规划,单调队列)

    [BZOJ2442]修建草坪(动态规划,单调队列) 题面 权限题..洛谷 题解 设\(f[i]\)表示前\(i\)个里面选出来的最大值 转移应该比较显然 枚举一个断点的位置,转移一下就好 \(f[i] ...

  8. 【BZOJ4372】烁烁的游戏(动态点分治)

    [BZOJ4372]烁烁的游戏(动态点分治) 题面 BZOJ 大意: 每次在一棵书上进行操作 1.将离某个点u的距离不超过d的点的权值加上w 2.询问单点权值 题解 这题和前面那一道震波几乎是一模一样 ...

  9. 【BZOJ1877】晨跑(费用流)

    [BZOJ1877]晨跑(费用流) 题面 Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他 坚持下来的只有晨跑. 现在 ...

  10. 【BZOJ3531】旅行(树链剖分,线段树)

    [BZOJ3531]旅行(树链剖分,线段树) 题面 Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足 从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教 ...