51nod97B 异或约束和
题目
定义\(f(i)\)为\(i\)的所有约数的异或和,给定 \(n(1\le n \le 10^{14})\) ,求\(f(1) xor f(2) xor f(3) xor...xor f(n)\) (其中\(xor\)表示按位异或)
思路
首先考虑到枚举因数\(x\),然后算出他是小于等于\(n\)的数字中\(x\)的倍数的个数,即\(\lfloor \frac{n}{x} \rfloor\),然后根据奇偶性判断是否要异或\(x\)
这样复杂度是\(O(n)\)的,看到\(\frac{n}{x}\)很容易想到数论分块。
然后问题就是如何快速查询连续区间的异或和。
设\(s[x]=1^\wedge2^\wedge3...^\wedge x\)
那么区间\([l,r]\)的异或和就是\(s[r]^\wedge s[l - 1]\)
然后对于\(s\)数组打个表如下

可以发现在模\(4\)意义下是有规律的。然后就可以\(O(1)\)计算连续区间异或和了。
代码
/*
* @Author: wxyww
* @Date: 2019-03-24 14:06:25
* @Last Modified time: 2019-03-24 14:23:58
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<ctime>
using namespace std;
typedef long long ll;
ll read() {
ll x=0,f=1;char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
ll n;
ll query(ll l) {
if(l % 4 == 1) l = 1;
else if(l % 4 == 2) ++l;
else if(l % 4 == 3) l = 0;
return l;
}
int main() {
n = read();
ll ans = 0;
for(ll l = 1,r;l <= n;l = r + 1) {
r = n / (n / l);
if((n / l) & 1)
ans ^= query(l - 1) ^ query(r);
}
cout<<ans;
return 0;
}
51nod97B 异或约束和的更多相关文章
- Oracle异常汇总
持续更新中,可参见https://hnuhell.gitbooks.io/oracle_errmg/content/或https://hnuhell.github.io/Oracle_ERRMG/上的 ...
- UML初览(转)
原文:UML初览 本章使用一个简单的例子对UML中所使用的概念和视图进行初览.本章的目的是要将高层UML概念组织成一系列较小的视图和图表来可视化说明这些概念,说明如何用各种不同的概念来描述一个系统以及 ...
- Lattice Diamond 学习之编译、检查和设置约束
在新建工程以及完成代码的输入之后.则就要进行编译,并检测错误. 一. Generate Hierarchy(产生层次结构). 1. 点击Generate Hierarchy 图标或者Design -- ...
- python 约束与异常处理
一.类的约束 1.约束就是对类的约束.其实就是父类对子类进行约束,子类必须要写xxx方法. 2.抽象:就是当我们没法对一个功能或者一个属性进行精确的表述,一般都采用抽象的方式给出. (1)抽象类的书写 ...
- 关于数据库主从表、主键PRIMARY KEY 外键约束 FOREIGN KEY 约束----NOT NULL,DEFAULT,CHECK
如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据.可在一个外键列中插入有效的值,但在另一个外键列中插入空值.然后,可添加一个数据表检查约束,在可为空的外键中检 ...
- python记录_day019 类的约束 异常处理 日志
一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
4.4.3 约束(Pattern的一部分) 前面我们已经介绍了条件约束在Pattern中位置了,那么什么是条件约束呢?简单来说就是一个返回true或者false的表达式,比如下面的5小于6,就是一个约 ...
- Oracle约束的启用和停用
关于Oracle的约束概念和基本操作,我已经在以前的<Constraint基础概念>.<Constraint的简单操作>两篇文章中有过比较详细的介绍了,但是对于如何停用和启 ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 约束(Pattern的一部分)
4.4.3 约束(Pattern的一部分) 前面我们已经介绍了条件约束在Pattern中位置了,那么什么是条件约束呢?简单来说就是一个返回true或者false的表达式,比如下面的5小于6,就是一个约 ...
随机推荐
- vue-router 通过路由来实现切换头部标题
在做单页面应用程序时,一般页面布局头尾两块都是固定在布局页面,中间为是路由入口.这时访问页面时头部标题不会变,该问题的解决方案如下: 通过采用组件内路由卫士(beforeRouterEnter.bef ...
- MySQL逻辑架构概述
1.MySQL逻辑架构 MySQL逻辑架构图 MySQL逻辑架构分四层 1.连接层:主要完成一些类似连接处理,授权认证及相关的安全方案. 2.服务层:在 MySQL据库系统处理底层数据之前的所有工作都 ...
- 从零学习Fluter(九):正式使用flutter进入商业开发
一下为下个app 功能模块简要划分 接口文档需要说明 公告接口 messageTitle -- 消息内容 红包墙接口 使用说明 地理位置定位 shareGetMoney - 分享活动金额 lookCo ...
- intellij idea 2017和Jprofiler 10的集成 报错问题
本来想用Jprofiler来分析一下自己写的Java项目,以提高代码执行效率和自己的编码能力.结果,官网和网上很多帖子都写了点出session->IDE integrations->选择i ...
- 【错误笔记】MyBatis SQLException: 无效的列类型: 1111
问题描述: org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #1 with J ...
- Django的URL调度
1.URLconf (URL configuration):(Django版本1.11.20,其它版本可能各有差异.) 在Django中Python后端与前端URL进行交互,是通过一个名为urlcon ...
- 分布式系统CAP理论
在单机的数据库系统之中,我们很容易实现一套满足ACID 特性的 事务处理系统, 事务的一致性不存在问题. 但是在分布式系统之中,由于数据分布在不同的主机结点上,如何对着些数据进行分布式的事务处理就具有 ...
- hashtable 简单介绍
Hashtable 1 注意小写 table 2 常用方法 void clear() boolean contains(Object value) ...
- pyhton从开始到光棍的day11
纪念我这个开始学python的光棍天,光棍天依旧是函数,这次的函数有个小高级,比昨天的low函数稍微高级点,就是在使用函数中是可以赋值的,比如索引一个值什么的.函数还可以当做参数进行传递,把这个函数名 ...
- js获取数组中最大值,最小值
遍历方法 var arr =[12,14,34,566,34,98,77] var max = arr[0]; for(var i=0;i<arr.length;i++){ if(max< ...