题目戳我

\(\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)\)的。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=20000000;
#define uint unsigned int
uint seed;
inline uint getnext(){
seed^=seed<<13;
seed^=seed>>17;
seed^=seed<<5;
return seed;
}
bitset<MAXN+1>vis;
int cnt,n;
uint a[MAXN],ans,p[MAXN];
int main(){
scanf("%d",&n);
scanf("%u",&seed);
for(int i=1;i<=n;++i)a[i]=getnext();
for(int i=2;i<=MAXN;++i){
if(!vis[i])p[++cnt]=i;
for(int j=1;j<=cnt&&i*p[j]<=MAXN;++j){
vis[i*p[j]]=1;
if(i%p[j]==0)break;
}
}
for(int i=1;i<=cnt;++i){
for(int j=1;j*p[i]<=MAXN;++j){
a[j*p[i]]+=a[j];
}
}
for(int i=1;i<=n;++i)ans^=a[i];
cout<<ans<<endl;
return 0;
}

最新文章

  1. GIS公交查询-flex/java
  2. Windows下Apache服务器中自动配置二级子域名
  3. MFC 打开文件夹选择框并获取文件夹路径
  4. 【ros】rplidar Hector Slam
  5. python网页爬虫
  6. PHP 依赖注入 (转)
  7. 宣布 Azure Backup 支持备份 Windows Server 2008
  8. ecshop在nginx下实现负载均衡
  9. MVC无刷新查询,PagedList分页控件使用,导出Excel
  10. 支持缩放的fresco图片控件 —— fresco sample: ZoomableDraweeView
  11. JDBC API 可滚动可编辑的结果集
  12. shardingsphere多数据源(springboot + mybatis+shardingsphere+druid)
  13. iTerm2使用技巧
  14. ModelViewSet 路由 / django logging配置 / django-debug-toolbar使用
  15. 2017.08.08【NOIP提高组】模拟赛B组
  16. Python 爬虫实例(7)—— 爬取 新浪军事新闻
  17. [蓝桥杯]PREV-10.历届试题_幸运数
  18. HTTPS协议、TLS协议、证书认证过程解析
  19. Django Admin 专题
  20. PL/SQL Developer从11.0.6版本开始32/64为之区分

热门文章

  1. 浅谈 FTP、FTPS 与 SFTP
  2. JDK16关于TCP和UDP的优化
  3. amd、cmd、CommonJS以及ES6模块化
  4. 关于JavaScript点击按钮打开多个页面被浏览器以广告嫌疑拦截怎么解决
  5. 会话技术之 Session
  6. UI设计中的软件知识
  7. python3之range()
  8. LC算法技巧总结(二):双指针和滑动窗口技巧
  9. flask提交表单验证不通过,以及CSRF攻击原理
  10. python中绑定码云仓库