题目戳我

\(\text{Solution:}\)

观察到一个\(a_i\)若对\(a_j\)有贡献,则必须\(i\)的所有质因子幂次小于等于\(j\)的质因子幂次。

于是,我们可以枚举质数的倍数并累加即可。其实就是把直接枚举每个数的倍数改为枚举质数的倍数,可以把\(O(n\log n)\)优化到\(O(n\log \log n).\)

注意:埃氏筛筛积性函数是可以做到\(O(n\log\log n)\)的(枚举质数的倍数),而直接枚举每一个数的倍数应该是\(O(n\log n)\)的。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN=20000000;
  4. #define uint unsigned int
  5. uint seed;
  6. inline uint getnext(){
  7. seed^=seed<<13;
  8. seed^=seed>>17;
  9. seed^=seed<<5;
  10. return seed;
  11. }
  12. bitset<MAXN+1>vis;
  13. int cnt,n;
  14. uint a[MAXN],ans,p[MAXN];
  15. int main(){
  16. scanf("%d",&n);
  17. scanf("%u",&seed);
  18. for(int i=1;i<=n;++i)a[i]=getnext();
  19. for(int i=2;i<=MAXN;++i){
  20. if(!vis[i])p[++cnt]=i;
  21. for(int j=1;j<=cnt&&i*p[j]<=MAXN;++j){
  22. vis[i*p[j]]=1;
  23. if(i%p[j]==0)break;
  24. }
  25. }
  26. for(int i=1;i<=cnt;++i){
  27. for(int j=1;j*p[i]<=MAXN;++j){
  28. a[j*p[i]]+=a[j];
  29. }
  30. }
  31. for(int i=1;i<=n;++i)ans^=a[i];
  32. cout<<ans<<endl;
  33. return 0;
  34. }

【学习笔记】Dirichlet前缀和的更多相关文章

  1. html5+css3学习笔记-prefixfree前缀补全插件

    虽然现代浏览器支持CSS3,但是一些过往的版本或是目前有些CSS3属性的应用还是离不开前缀的.一些牛逼且执着于web技术且乐于分享的仁兄(Lea Verou)就搞了个名叫prefixfree.js的插 ...

  2. Dynamic CRM 2013学习笔记(四十五)修改实体及字段的前缀(不用new_开头)

    最近做一个升级的CRM项目,为了区分哪些是新增的,所以决定用一个新的前缀来定义实体及新加的字段.之前用的是new_开头,现在改成tm_开头.   原来只要是新建实体或字段都是new_开头:   1. ...

  3. Dirichlet 卷积学习笔记

    Dirichlet 卷积学习笔记 数论函数:数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数. 然而百科在说什么鬼知道呢, ...

  4. 初等数论学习笔记 III:数论函数与筛法

    初等数论学习笔记 I:同余相关. 初等数论学习笔记 II:分解质因数. 1. 数论函数 本篇笔记所有内容均与数论函数相关.因此充分了解各种数论函数的名称,定义,符号和性质是必要的. 1.1 相关定义 ...

  5. JavaScript权威设计--JavaScript函数(简要学习笔记十)

    1.函数命名规范 函数命名通常以动词为前缀的词组.通常第一个字符小写.当包含多个单词时,一种约定是将单词以下划线分割,就像"like_Zqz()". 还有一种就是"lik ...

  6. Sass学习笔记之入门篇

    Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样 ...

  7. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. swift学习笔记1——基础部分

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  10. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

随机推荐

  1. 【Docker】Docker安装运行dubbo-admin

    运行dubbo-admin服务, 此服务需要单独启动一个zookeeper容器 dubbo-admin将监听所有注册到zookeeper的服务, dubbo-admin默认端口8080 1 运行一个z ...

  2. java中equals与hashCode的重写问题

    这几天有一个朋友问我在重写equals和hashCode上出现了问题,最后我帮她解决了问题,同时也整理出来分享给大家 现上Object的equals与HashCode的代码 public boolea ...

  3. Zabbix Agent报“listener failed: zbx_tcp_listen() fatal error: unable to serve on any address”

    一台服务器的Zabbix Agent升级后,在Zabbix Server发现Zabbix Agent无法访问.检查Zabbix Agent发现服务停止了,启动Zabbix Agent后,发现服务马上又 ...

  4. 用Maven给一个Maven工程打包,使用阿里云镜像解决mvn clean package出错的问题,使用plugin解决没有主清单属性的问题

    本来在STS里做了一个极简Maven工程,内中只有一个Main方法的Java类,然后用新装的Maven3.6.3给它打包. 结果,Maven罢工,输出如下: C:\personal\programs\ ...

  5. IDAPython 安装和设置(windows+linux)

    安装步骤: 我采用的是IDA 6.8 windows安装: 机器上安装了Python,到Python的官网—http://www.python.org/getit/下载2.7的安装包.注意对应操作系统 ...

  6. Euclid's Game(POJ 2348)

    原题如下: Euclid's Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10832   Accepted: 4 ...

  7. css常用属性之display属性

    1.dispaly属性之一:块级标签转行内便签display: inline(内容有多大,就展示多大(用F12看区别)) 2.display属性之二:行内便签转块级标签:diaplay: block ...

  8. 《C语言进阶剖析》课程目录

    <C语言进阶剖析>学习笔记                                                         本文总结自狄泰软件学院唐佐林老师的<C语言 ...

  9. JavaScript 流程控制-分支

    JavaScript 流程控制-分支 1.流程控制 在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能. 简单理解:流程控 ...

  10. 跨平台框架与React Native基础

    跨平台框架 什么是跨平台框架? 这里的多个平台一般是指 iOS 和 Android . 为什么需要跨平台框架? 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平 ...