点此看题面

大致题意: 求\(\sum_{n=1}^{5\times10^8}((\sum_{i=1}^n\phi(n^i))(mod\ n+1))\)。

大力推式子

单独考虑\((\sum_{i=1}^n\phi(n^i))(mod\ n+1)\)。

由于\(\phi\)有一个显然的性质:

\[\phi(x^y)=\phi(x)\cdot x^{y-1}
\]

所以上面的式子就可以推成:

\[(\phi(n)\sum_{i=1}^nn^{i-1})(mod\ n+1)
\]

又由于\(n\equiv-1(mod\ n+1)\),所以上式即为:

\[(\phi(n)\sum_{i=1}^n(-1)^{i-1})(mod\ n+1)
\]

观察\(\sum_{i=1}^n(-1)^{i-1}\)可知,这个式子在\(n\)为奇数时为\(1\),\(n\)为偶数时为\(0\)。

而显然\(\phi(n)<n<n+1\),所以最后我们要求的就是\(1\sim5*10^8\)内所有奇数的\(\phi\)值之和。

注意开数组

注意到一点,\(5\times10^8\)的数组即使在本地也是开不下的。

怎么办?杜教筛。

好吧,实际上可以不用杜教筛。

考虑到我们只需要奇数的\(\phi\)值,而\(\phi\)是一个积性函数,显然我们不可能从偶数的\(\phi\)值转移得出奇数的\(\phi\)值,因此筛偶数是不必要的。

这样一来,对于一个奇数\(x\),我们用数组第\(\frac{x+1}2\)位去存储它,就实现了数组大小减半,开得下了。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 500000000
#define LL long long
using namespace std;
class LinearSiever//线性筛
{
private:
#define LS 250000000
#define PS 15000000
int Pt,P[PS+5];bool vis[LS+5];
public:
int phi[LS+5];//存储phi值
I void Sieve(CI S)
{
RI i,j;for(phi[1]=1,i=3;i<=S;i+=2)//与普通线性筛几乎无异,但注意下标变化
{
!vis[i+1>>1]&&(P[++Pt]=i,phi[i+1>>1]=i-1);
for(j=1;j<=Pt&&1LL*i*P[j]<=S;++j)
if(vis[i*P[j]+1>>1]=1,i%P[j]) phi[i*P[j]+1>>1]=phi[i+1>>1]*(P[j]-1);
else {phi[i*P[j]+1>>1]=phi[i+1>>1]*P[j];break;}
}
}
}L;
int main()
{
RI i;LL ans=0;for(L.Sieve(N),i=1;i<=(N+1>>1);++i) ans+=L.phi[i];//统计答案
return printf("%lld",ans),0;//输出答案
}

运行结果

50660591862310323

【PE512】Sums of totients of powers(欧拉函数)的更多相关文章

  1. POJ1284 Primitive Roots [欧拉函数,原根]

    题目传送门 Primitive Roots Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5434   Accepted:  ...

  2. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  3. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  4. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  5. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

  6. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  7. 51Nod-1136 欧拉函数

    51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...

  8. 欧拉函数 - HDU1286

    欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...

  9. FZU 1759 欧拉函数 降幂公式

    Description   Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...

  10. hdu 3307 Description has only two Sentences (欧拉函数+快速幂)

    Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...

随机推荐

  1. set -x 与 set +x

    set -x 与 set +x 在liunx脚本中可用set -x就可有详细的日志输出.免的老是要echo了 下面的网上搜来的用法. 用于脚本调试.set是把它下面的命令打印到屏幕set -x 是开启 ...

  2. Kafka随笔

    1.选举Leader  Leader 是 Partition 级别的,当一个 Broker 挂掉后,所有 Leader 在该 Broker 上的 Partition 都会被重新选举,选出一个新 Lea ...

  3. 短的 Guid 帮助类

    直接贴代码了: /// <summary> /// 短的 Guid 帮助类 /// </summary> public class ShortGuidHelper { #reg ...

  4. Django学习笔记(18)——BBS+Blog项目开发(2)主体思路及流程

    这篇博客主要完成一个BBS+Blog项目,那么主要是模仿博客园的博客思路,使用Django框架进行练习. 准备:项目需求分析 在做一个项目的时候,我们首先做的就是谈清楚项目需求,功能需求,然后才开始写 ...

  5. mysql 开启慢查询及其用mysqldumpslow做日志分析

    mysql慢查询日志是mysql提供的一种日志记录,它是用来记录在mysql中相应时间超过阈值的语句,就是指运行时间超过long_query_time值的sql,会被记录在慢查询日志中.long_qu ...

  6. WPF实现背景透明磨砂,并通过HandyControl组件实现弹出等待框

    前言:上一个版本的Winform需要改成WPF来做界面,第一次接触WPF,在转换过程中遇到的需求就是一个背景透明模糊,一个是类似于 加载中…… 这样的等待窗口,等后台执行完毕后再关掉.在Winform ...

  7. ArcGIS随机数生成

    arcgis python 随机数 语法用法一例: //--------------------------------------------- //定义函数getnums  返回一个随机数(0,5 ...

  8. Asp.Net或WebAPI获取表单数据流(批量文件上传)

    //Web或WebAPI获取表单数据流(批量文件上传)        public JsonResult UploadFile()        {            //HttpPostedFi ...

  9. 部署 asp.net 网站到 Azure

    部署asp.net网站到Azure 前言 前些天一直在写一个单页面web应用程序,终于完成了,于是考虑发布到云服务器.本人没有AWS账号,遂本打算使用谷歌云.参考文档后发现官方文档给出的方式为在vis ...

  10. Java中的参数验证(非Spring版)

    1. Java中的参数验证(非Spring版) 1.1. 前言 为什么我总遇到这种非正常问题,我们知道很多时候我们的参数校验都是放在controller层的传入参数进行校验,我们常用的校验方式就是引入 ...