P4213 【模板】杜教筛
[题目链接] https://www.luogu.org/problemnew/show/P4213
给定一个正整数\(N(N\le2^{31}-1)\)
求
\(ans_1=\sum_{i=1}^n\varphi(i)\)
\(ans_2=\sum_{i=1}^n \mu(i)\)
[题解] https://acfcacfca.blog.luogu.org/dls-tql
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#include<tr1/unordered_map>
//#define int long long
using namespace std;
typedef long long LL;
const int INF=1e9+7;
inline LL read(){
register LL x=0,f=1;register char c=getchar();
while(c<48||c>57){if(c=='-')f=-1;c=getchar();}
while(c>=48&&c<=57)x=(x<<3)+(x<<1)+(c&15),c=getchar();
return f*x;
}
const int MAXN=5e6+5;
LL mu[MAXN];LL phi[MAXN];
int prime[MAXN];bool vis[MAXN];
unordered_map <int,LL> Smu,Sphi;
int n,T;
inline void init(int n){
mu[1]=1,phi[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i]){
prime[++prime[0]]=i;
mu[i]=-1;
phi[i]=i-1;
}
int x;
for(int j=1;j<=prime[0]&&(x=(i*prime[j]))<=n;j++){
vis[x]=1;
if(i%prime[j]==0){
mu[x]=0;
phi[x]=1ll*phi[i]*prime[j];
break;
}
mu[x]=-mu[i];
phi[x]=1ll*phi[i]*phi[prime[j]];
}
}
for(int i=2;i<=n;i++)
mu[i]+=mu[i-1],phi[i]+=phi[i-1];
}
inline LL S_mu(int x){
if(x<MAXN) return mu[x];
if(Smu[x]) return Smu[x];
LL res=1;
for(int l=2,r;l<=x;l=r+1){
r=x/(x/l);
res-=1ll*(r-l+1)*S_mu(x/l);
}
return Smu[x]=res;
}
inline LL S_phi(int x){
if(x<MAXN) return phi[x];
if(Sphi[x]) return Sphi[x];
LL res=1LL*x*(x+1)/2;//对int敏感!!
for(int l=2,r;l<=x;l=r+1){
r=x/(x/l);
res-=1LL*(r-l+1)*S_phi(x/l);
}
return Sphi[x]=res;
}
signed main(){
T=read();
init(MAXN-1);
while(T--){
n=read();
printf("%lld %lld\n",S_phi(n),S_mu(n));
}
}
P4213 【模板】杜教筛的更多相关文章
- luoguP4213 [模板]杜教筛
https://www.luogu.org/problemnew/show/P4213 同 bzoj3944 考虑用杜教筛求出莫比乌斯函数前缀和,第二问随便过,第一问用莫比乌斯反演来做,中间的整除分块 ...
- [模板] 杜教筛 && bzoj3944-Sum
杜教筛 浅谈一类积性函数的前缀和 - skywalkert's space - CSDN博客 杜教筛可以在\(O(n^{\frac 23})\)的时间复杂度内利用卷积求出一些积性函数的前缀和. 算法 ...
- 洛谷P4213 Sum(杜教筛)
题目描述 给定一个正整数N(N\le2^{31}-1)N(N≤231−1) 求ans_1=\sum_{i=1}^n\phi(i),ans_2=\sum_{i=1}^n \mu(i)ans1=∑i=1 ...
- 洛谷P4213(杜教筛)
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn = 3e6 + 3; ...
- LG4213 【模板】杜教筛(Sum)和 BZOJ4916 神犇和蒟蒻
P4213 [模板]杜教筛(Sum) 题目描述 给定一个正整数$N(N\le2^{31}-1)$ 求 $$ans_1=\sum_{i=1}^n\varphi(i)$$ $$ans_2=\sum_{i= ...
- p4213 【模板】杜教筛(Sum)
传送门 分析 我们知道 $\varphi * 1 = id$ $\mu * 1 = e$ 杜教筛即可 代码 #include<iostream> #include<cstdio> ...
- P4213 【模板】杜教筛(Sum)
\(\color{#0066ff}{题 目 描 述}\) 给定一个正整数\(N(N\le2^{31}-1)\) 求 \(\begin{aligned} ans_1=\sum_{i=1}^n\varph ...
- [洛谷P4213]【模板】杜教筛(Sum)
题目大意:给你$n$,求:$$\sum\limits_{i=1}^n\varphi(i),\sum\limits_{i=1}^n\mu(i)$$最多$10$组数据,$n\leqslant2^{31}- ...
- P4213【模板】杜教筛(Sum)
思路:杜教筛 提交:\(2\)次 错因:\(\varphi(i)\)的前缀和用\(int\)存的 题解: 对于一类筛积性函数前缀和的问题,杜教筛可以以低于线性的时间复杂度来解决问题. 先要构造\(h= ...
- BZOJ3944: Sum(杜教筛模板)
BZOJ3944: Sum(杜教筛模板) 题面描述 传送门 题目分析 求\(\sum_{i=1}^{n}\mu(i)\)和\(\sum_{i=1}^{n}\varphi(i)\) 数据范围线性不可做. ...
随机推荐
- 基于:Hadoop 2.6.0-cdh5.4.0 hive1.1.0 HBase 1.0.0-cdh5.4.0 关键配置文件
core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value ...
- 【272】ArcPy处理数据
参考:ArcPy 函数列表(按字母顺序) 参考:在arcgis上用python脚本(arcpy)做数据批处理 1. 导入 ArcPy,定义 Workspace >>> import ...
- [poj2653]Pick-up sticks
题目大意:给定一系列线段,以及放在平面上的顺序,给出没有被其他覆盖的线段. 解题关键:线段相交的判断. 满足两个条件即可:快速排斥实验.跨立实验. #include<cstdio> #in ...
- Linux alien命令
一.简介 alien是一个用于在各种不同的Linux包格式相互转换的工具,其最常见的用法是将.rpm转换成.deb(或者反过来). 二.安装 http://toutiao.com/a618899776 ...
- 孕妇的孕周和体重对胎儿游离DNA在母体cfDNA占比的影响
有一篇文件,研究了孕妇的孕周和体重对 胎儿游离DNA在母体cfDNA中占比的影响 文章名称:Gestational age and maternal weight effects on fetal c ...
- Luogu 2467 [SDOI2010]地精部落
挺有意思的题. 优质题解: https://www.luogu.org/blog/user55639/solution-p2467 题意为求长度为n,取值为$[1, n]$的波动序列的个数. 首先需要 ...
- C++文件流打开标识符.RP
ofstream流,以ios::app打开(或者“ios::app|ios::out”),如果没有文件,那么生成空文件:如果有文件,那么在文件尾追加.以ios::app|ios::in打开,不管有没有 ...
- 【Arcgis for android】相关教程收集自网络
请加入qq群:143501213 一起交流和学习 推荐博客: 张云飞VIR http://www.cnblogs.com/vir56k/tag/arcgis%20for%20android/ arcg ...
- C#获取WINDOWS系统信息
需引用System.Management命名空间, 具体代码如下: public class SysProp { public SysProp() { ManagementObjectSearcher ...
- Memcached Cache
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Memcached ...