解题思路类似莫比乌斯函数之和

题目大意:求[1,n]内的欧拉函数$\varphi$之和。($n<=2*10^{9}$)

思路:令$ M(n)=\sum_{i=1}^{n}\varphi (i)  $,题目所求即为$ M(n) $。

由于$ \sum_{d|n} \varphi (d)=n $ ,所以$ \sum_{i=1}^{n} \sum_{d|i} \varphi (d)=\frac{n(n+1)}{2} $

令$ i=kd $,则有$ \sum_{i=1}^{n} \sum_{d|i} \varphi (d)= \sum_{k=1}^{n} \sum_{d=1}^{\left \lfloor n/k \right \rfloor} \varphi (d) = \sum_{k=1}^{n} M(\left \lfloor n/k \right \rfloor) =\frac{n(n+1)}{2} $

那么$ M(n)=\frac{n(n+1)}{2}-\sum_{i=2}^{n} M(\left \lfloor n/i \right \rfloor) $

由于$ \left \lfloor n/i \right \rfloor $的取值只有$ O(\sqrt{n}) $种,预处理出前$ n^{\frac{2}{3}} $的$ M(n) $,然后记忆化搜索,可以证明总时间复杂度为$ O(n^{\frac{2}{3}}) $。

#include<cstdio>
#define ll long long
#define MN 1600000
#define MOD 2333333
struct edge{edge*nx;ll f;int x;}*h[MOD];
ll f[MN+];
int p[MN+],pn;
bool u[MN+];
ll cal(int n)
{
if(n<=MN)return f[n];
for(edge*i=h[n%MOD];i;i=i->nx)if(i->x==n)return i->f;
edge*np=new edge;*np=(edge){h[n%MOD],1LL*n*(n+)>>,n};h[n%MOD]=np;
for(int i=,ls;i<=n;i=ls+)ls=n/(n/i),np->f-=(ls-i+)*cal(n/i);
return np->f;
}
int main()
{
int n,i,j;
scanf("%d",&n);
for(f[]=,i=;i<=MN;++i)
{
if(!u[i])p[++pn]=i,f[i]=i-;
for(j=;i*p[j]<=MN&&(u[i*p[j]]=);++j)
if(i%p[j])f[i*p[j]]=f[i]*(p[j]-);
else{f[i*p[j]]=f[i]*p[j];break;}
f[i]+=f[i-];
}
printf("%lld",cal(n));
}

[BZOJ]4805: 欧拉函数求和的更多相关文章

  1. BZOJ 4805: 欧拉函数求和 杜教筛

    https://www.lydsy.com/JudgeOnline/problem.php?id=4805 给出一个数字N,求sigma(phi(i)),1<=i<=N https://b ...

  2. 【刷题】BZOJ 4805 欧拉函数求和

    Description 给出一个数字N,求sigma(phi(i)),1<=i<=N Input 正整数N.N<=2*10^9 Output 输出答案. Sample Input 1 ...

  3. BZOJ4805: 欧拉函数求和(杜教筛)

    4805: 欧拉函数求和 Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 614  Solved: 342[Submit][Status][Discus ...

  4. 【BZOJ4805】欧拉函数求和(杜教筛)

    [BZOJ4805]欧拉函数求和(杜教筛) 题面 BZOJ 题解 好久没写过了 正好看见了顺手切一下 令\[S(n)=\sum_{i=1}^n\varphi(i)\] 设存在的某个积性函数\(g(x) ...

  5. poj3090欧拉函数求和

    E - (例题)欧拉函数求和 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     ...

  6. HDU2824-The Euler function-筛选法求欧拉函数+求和

    欧拉函数: φ(n)=n*(1-1/p1)(1-1/p2)....(1-1/pk),其中p1.p2-pk为n的所有素因子.比如:φ(12)=12*(1-1/2)(1-1/3)=4.可以用类似求素数的筛 ...

  7. BZOJ 4802 欧拉函数

    4802: 欧拉函数 Description 已知N,求phi(N) Input 正整数N.N<=10^18 Output 输出phi(N) Sample Input 8 Sample Outp ...

  8. BZOJ 4802 欧拉函数(Pollard_Rho)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题目大意] 已知N,求phi(N),N<=10^18 [题解] 我们用P ...

  9. [bzoj 2818]欧拉函数

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818 枚举最大公约数,对于每一个质数p,只需要求出1<=x,y<=(n/p)范 ...

随机推荐

  1. 实验二Java面向对象程序设计实验报告(2)

    实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...

  2. 201421123042 《Java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...

  3. raid5 阵列硬盘离线数据恢复成功案例

    数据恢复故障描述: 某研究院 DELL 磁盘阵列崩溃,内置15块1TB硬盘搭建的RAID5阵列.一开始有一块硬盘离线,在更换新硬盘进行同步的过程中,第二块磁盘指示灯报警,同步失败,阵列无法正常工作. ...

  4. 直方图均衡化及matlab实现

    在处理图像时,偶尔会碰到图像的灰度级别集中在某个小范围内的问题,这时候图像很难看清楚.比如下图: 它的灰度级别,我们利用一个直方图可以看出来(横坐标从0到255,表示灰度级别,纵坐标表示每个灰度级别的 ...

  5. 安装nodejs时:The error code is 2503.

    在windows下安装nodejs时老是报错: The installer has encountered an unexpected error installing . 有三种方法可以尝试: &q ...

  6. Mego开发文档 - 基础查询

    基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...

  7. jquery实现对div的拖拽功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. JAVA 中一个非常轻量级只有 200k 左右的 RESTful 路由框架

    ICEREST 是一个非常轻量级只有 200k 左右的 RESTful 路由框架,通过 ICEREST 你可以处理 url 的解析,数据的封装, Json 的输出,和传统的方法融合,请求的参数便是方法 ...

  9. 基于dns搭建eureka集群

    eureka集群方案: 1.通常我们部署的eureka节点多于两个,根据实际需求,只需要将相邻节点进行相互注册(eureka节点形成环状),就达到了高可用性集群,任何一个eureka节点挂掉不会受到影 ...

  10. GIT入门笔记(10)- 多种撤销修改场景和对策

    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步, ...