链接

luogu

思路

为了做hdu来学杜教筛。
杜教筛模板题。
卡常数,我加了register居然跑到不到800ms。
太深了。

代码

// luogu-judger-enable-o2
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=5000030;
int vis[_],pri[_],cnt,N,limit,mu[_];
ll phi[_];
unordered_map<int,ll> ans_phi;
unordered_map<int,ll> ans_mu;
inline void Euler() {vis[1]=phi[1]=mu[1]=1;for(register int i=1;i<=limit;++i) {if(!vis[i]) pri[++cnt]=i,mu[i]=-1,phi[i]=i-1;for(register int j=1;j<=cnt&&i*pri[j]<=limit;++j) {vis[i*pri[j]]=1;if(i%pri[j]==0) {mu[i*pri[j]]=0;phi[i*pri[j]]=phi[i]*pri[j];break;} else {mu[i*pri[j]]=-mu[i];phi[i*pri[j]]=phi[i]*(pri[j]-1);}}}for(register int i=2;i<=limit;++i) mu[i]+=mu[i-1],phi[i]+=phi[i-1];
}
ll Solvephi(register int n) {if(n<=limit) return phi[n];if(ans_phi[n]) return ans_phi[n];register ll tmp=1LL*n*(n+1)/2;for(register int l=2,r;l<=n;l=r+1)r=n/(n/l),tmp-=Solvephi(n/l)*(r-l+1);return ans_phi[n]=tmp;
}
ll Solvemu(register int n) {if(n<=limit) return mu[n];  if(ans_mu[n]) return ans_mu[n];register ll tmp=1;for(register int l=2,r;l<=n;l=r+1)r=n/(n/l),tmp-=Solvemu(n/l)*(r-l+1);return ans_mu[n]=tmp;
}
int main() {int T;cin>>T;limit=5000000;Euler();while(T --> 0) {cin>>N;printf("%lld %lld\n",Solvephi(N),Solvemu(N));}return 0;
}

转载于:https://www.cnblogs.com/dsrdsr/p/11409535.html

luoguP4213 【模板】杜教筛(Sum)杜教筛相关推荐

  1. 微信小程序(评教系统--教师列表,评教方式,评教问题)

    评教中,当学生陆后显示需要评教的教师列表,选择评教老师,再选择是常规评教还是统一评教,进入后选择每道题目所选的选项提交后得到总分数.流程如下: 教师列表:再建一个teacher目录,分别写js和wxm ...

  2. 如何区别软杜比和硬杜比呢?别问了,问就是干货

    居然还有小伙伴不知道什么是软杜比和硬杜比? 前几年,某某XXX,哦,不对是前几天,moumou开发工程师问我,什么是软杜比和硬杜比,怎么区分? 咳咳~,软杜比就是软件解杜比,硬杜比就是硬件解杜比,杜比 ...

  3. 地下城与勇士(DNF)堕落之殿副本(GBL教阿德拉分部、GBL教研究所、GBL教孵化场)(童年的回忆)

    1 堕落之殿副本图 GBL教阿德拉分部 GBL教研究所 GBL教孵化场   2 GBL教阿德拉分部 一直以来,很多人都认为GBL教只生活在天帷巨兽的神殿中.但最近,有人发现GBL教在阿拉德大陆设了分部 ...

  4. 筛表合集(素数筛 欧拉函数筛 莫比乌斯函数筛)

    [目录] 一.素数筛 1.素数判断 2.素数普通筛 3.素数线性筛 4.素数区间筛 二.欧拉函数筛 三.莫比乌斯函数筛 [素数筛] 1.直接判定质数 bool judgePrime( int num ...

  5. 埃氏筛与欧拉筛(线性筛)

    目录 一.前言 二.埃氏筛与欧拉筛(线性筛) 1.问题描述 2.基本思路 (1)埃氏筛法 (2)欧拉筛法 三.题例 1.上链接 2.简单思路 3.代码 (1)埃氏筛python版 (2)欧拉筛pyth ...

  6. dst发育筛查有意义吗_儿童视力筛查,都筛些啥?

    感谢眼科小伙伴们的早出晚归辛勤忙碌,感谢幼儿园.学校及小朋友们的积极配合,本学期的校园视力筛查也已进入尾声.相信爸爸妈妈们都已拿到了这样的筛查结果单: (学龄前儿童仅行电脑验光筛查,学龄儿童还需行视力 ...

  7. C++实现暴力筛、朴素素数筛、埃氏素数筛、欧拉素数筛的解法

    前言:今天有身边的人在群里吐槽了一道烟台大学OJ上面的水题 然后他提出的问题是:如何开一个1000w大小的数组来存储. What?我仔细看了一眼题目,觉得问题的关键并不是数组可以开多大.而是这是一道在 ...

  8. 算法笔记--素数筛(朴素筛,埃式筛,欧拉筛)

    素数 素数也叫质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数.如2 , 3 , 5 , 7 , 11等. 素数筛 素数筛即筛选出1~n内的素数的方法,这里介绍三种 常见的求素数 ...

  9. 筛选质数,埃氏筛和欧拉筛(线性筛)

    求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...

  10. 素数筛法详解:埃氏筛和欧拉筛

    文章目录 摘要 埃式筛 欧拉筛 超级详细的基础算法和数据结构合集: https://blog.csdn.net/GD_ONE/article/details/104061907 摘要 本文主要介绍埃氏 ...

最新文章

  1. WebSocket服务器TransactionID_SiteDetailMap的析构工作
  2. Android 5.0以上heads up通知
  3. shell中exec命令
  4. 2017-5-5/PHP实现负载均衡的加权轮询
  5. WF4.0 基础篇 (二十五)(补充) ActivityFunc 与 InvokeFunc
  6. Layui 数据表格:用户个性化定制列(拖拽,隐藏)
  7. java大数阶乘_Java大数阶乘
  8. win10显示从服务器返回了一个文件,win10在运行软件时提示“从服务器返回一个参照”怎么办...
  9. 观李永乐老师讲音律有感——《管子·地员》之“三分损益法”的探究
  10. 2021-04-26 PNP三极管
  11. Python练习题 01
  12. 计算机小游戏有哪些,为你解答电脑小游戏有哪些
  13. sufficient statistics
  14. 电弧故障保护装置的产能、产量、销量、销售额、价格及未来趋势
  15. 基于Java的高考志愿填报与录取系统
  16. 面试总结及相关知识点汇总
  17. PMP备考大全:经典题库(敏捷管理第16期)
  18. 2022年秋招/春招/提前批/大厂面经整理(持续更新中~)
  19. 电机星三角降压启动 博图SCL编程练习
  20. Fiddler屏蔽某些url的抓取方法

热门文章

  1. # 字符串从右往左查找_字符串匹配(搜索,查找)算法
  2. 模块简介/模块的导入/模块的查找顺序/绝对导入和相对导入/软件开发目录规范...
  3. 线性回归,logistic回归和一般回归
  4. python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)
  5. Eigen(5)Array类和元素级操作
  6. Qt 布局(水平、垂直、网格)
  7. 【资料整理】proftpd安装配置
  8. C++设计模式-Prototype原型模式
  9. 如何在myeclipse中导入jar包?
  10. 以实例让你真正明白mapreduce---填空式、分布(分割)编程