线性筛-三合一,强大O(n)
校内CJOJ2395by Jesse Liu
筛法三合一 Euler、Möbius、Prime函数
基于数论的积性函数
gcd(a,b)=1 则 ƒ(ab)=ƒ(a)ƒ(b)
- #include <algorithm>
- #include <iostream>
- #include <cstring>
- #include <cstdlib>
- #include <cstdio>
- #include <vector>
- #include <cmath>
- #include <queue>
- #include <map>
- #include <set>
- using namespace std;
- #define file(x) freopen(x".in","r",stdin),freopen(x".out","w",stdout)
- inline void read(int &ans){
- ans=;char x=getchar();int f=;
- while(x<''||x>''){if(x=='-')f=;x=getchar();}
- while(x>=''&&x<='')ans=ans*+x-'',x=getchar();
- if(f)ans=-ans;
- }
- const int maxn=(int)1e7+;
- int phi[maxn],mu[maxn],p[maxn],flag[maxn],cnt;
- void sieve(int n){
- mu[]=phi[]=;
- for(int i=;i<=n;i++){
- if(!flag[i])p[++cnt]=i,mu[i]=-,phi[i]=i-;
- for(int j=;j<=cnt && i*p[j]<=n;j++){
- flag[i*p[j]]=;
- if(i%p[j]==){mu[i*p[j]]=,phi[i*p[j]]=phi[i]*p[j];break;}
- mu[i*p[j]]=-mu[i],phi[i*p[j]]=phi[i]*(p[j]-);
- }
- }
- }
- int main(){
- sieve((int)1e7);
- int T,op,n;
- for(read(T);T--;){
- read(op),read(n);
- printf("%d\n",op==?p[n]:op==?mu[n]:phi[n]);
- }
- return ;
- }
sieve
进一步学习的建议,Jesse Liu
线性筛-三合一,强大O(n)的更多相关文章
- 线性筛-euler,强大O(n)
欧拉函数是少于或等于n的数中与n互质的数的数目 φ(1)=1(定义) 类似与莫比乌斯函数,基于欧拉函数的积性 φ(xy)=φ(x)φ(y) 由唯一分解定理展开显然,得证 精髓在于对于积性的应用: ){ ...
- 线性筛-mobius,强大O(n)
首先,你要知道什么是莫比乌斯函数 然后,你要知道什么是积性函数 最后,你最好知道什么是线性筛 莫比乌斯反演 积性函数 线性筛,见上一篇 知道了,就可以愉快的写mobius函数了 由定义: μ(n)= ...
- bzoj2693--莫比乌斯反演+积性函数线性筛
推导: 设d=gcd(i,j) 利用莫比乌斯函数的性质 令sum(x,y)=(x*(x+1)/2)*(y*(y+1)/2) 令T=d*t 设f(T)= T可以分块.又由于μ是积性函数,积性函数的约束和 ...
- BZOJ 2693: jzptab [莫比乌斯反演 线性筛]
2693: jzptab Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1194 Solved: 455[Submit][Status][Discu ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- 【BZOJ-4514】数字配对 最大费用最大流 + 质因数分解 + 二分图 + 贪心 + 线性筛
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 726 Solved: 309[Submit][Status ...
- 洛谷P3383 【模板】线性筛素数
P3383 [模板]线性筛素数 256通过 579提交 题目提供者HansBug 标签 难度普及- 提交 讨论 题解 最新讨论 Too many or Too few lines 样例解释有问题 ...
- 【BZOJ-4407】于神之怒加强版 莫比乌斯反演 + 线性筛
4407: 于神之怒加强版 Time Limit: 80 Sec Memory Limit: 512 MBSubmit: 241 Solved: 119[Submit][Status][Discu ...
- BZOJ-2186 沙拉公主的困惑 线性筛(筛筛筛)+线性推逆元
2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 2417 Solved: 803 [Submit][St ...
随机推荐
- 541-反转字符串 II
541-反转字符串 II 给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转.如果剩余少于 k 个字符,则将剩余的所有全部反转.如果有小于 2k 但大于或等 ...
- 【Python】1.PyQT5界面初尝试
1->通过pycharm打开QTdesigner.创建新Form. 2->选择Widget创建 3->不添加任何控件 点击保存 pycharm列表如下 后缀名位ui的 即QTdes ...
- Hdu2097 Sky数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2097 Problem Description Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶 ...
- PHP 实现时间戳转化为几分钟前、几小时前等格式
//发布时间提示 function get_last_time($time) { // 当天最大时间 $todayLast = strtotime(date('Y-m-d 23:59:59')); $ ...
- CTF——代码审计之变量覆盖漏洞writeup【1】
题目: 所需基础知识: 分析: 思路:由于目的是要拿$flag的值,所以可以得出最终会输出两个变量,而$flag的值在红框那行,被我们自己post的值给覆盖,所以flag值肯定不会在这出来,那么只剩下 ...
- SpringBoot学习- 1、SpringSuit创建项目
SpringBoot学习足迹 前言:最近一次开发java后台应用还是三年前的2017年,主要使用SSH开发小型外包项目和公司的一个产品,感觉再不回顾下可能就要彻底忘记了,准备做一个后台管理项目练练手, ...
- setUserData
node.setUserData();//设置每个节点的datanode.getUserData();
- 在SQL2005中修改数据库名称
SQL Server 2005中有个数据库HT_WisdomDataBaseCenter,现在要将其改名为HT_NBSBOneNetcs1步骤:(1) 分离数据库:打开management studi ...
- 对象Bean与Map互转问题
一.摘要 在实际开发过程中,经常碰到需要进行对象与map之间互转的问题,其实对于对象.Map 之间进行互转有很多种方式,下面我们一起来梳理一下: 利用 JSON 工具包,将对象转成字符串,之后再转成 ...
- Art Union
A well-known art union called "Kalevich is Alive!" manufactures objects d'art (pictures). ...