点此看题面

大致题意: 求\(\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. RocketMQ支持事务消息机制

    事务消费 我们经常支付宝转账余额宝,这是日常生活的一件普通小事,但是我们思考支付宝扣除转账的钱之后,如果系统挂掉怎么办,这时余额宝账户并没有增加相应的金额,数据就会出现不一致状况了. 上述场景在各个类 ...

  2. ASP.NET Core快速入门(第2章:配置管理)- 学习笔记(转载)

    原文地址:https://mp.weixin.qq.com/s?__biz=MjM5NjMzMzE2MA==&mid=2451733443&idx=2&sn=6d01721c5 ...

  3. ThinkPHP 3.2 自定义基类 Model

    ThinkPHP 提供了一个 Model 类,供其他的 Model 进行继承.Model 类中是 MVC 中的模型类,它是调用 持久层 的上层类.感觉这么描述问题很多,但是有什么办法呢?但是,这个 M ...

  4. Shell基本运算符之算术、关系运算符

    Shell 运算符 =============================摘自菜鸟教程================================= Shell和其他编程语言一样,支持多种运算 ...

  5. redis命令之 ----key(键)

    DEL DEL key [key ...] 删除给定的一个或多个 key . 不存在的 key 会被忽略. DUMP DUMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE  ...

  6. ElasticSearch 6.7.1操作纪录

    以下操作均在 6.7.1版本中正常 c# ES客户端 测试项目地址:https://gitee.com/dhclly/IceDog.ElasticSearchClient/tree/master/sr ...

  7. CreateDatabase is not supported by the provider

    背景:对于本地数据库如(SQLite\Access) Connection string error: “An exception occurred while initializing the da ...

  8. kali渗透综合靶机(六)--FristiLeaks靶机

    kali渗透综合靶机(六)--FristiLeaks靶机 靶机地址下载:https://download.vulnhub.com/fristileaks/FristiLeaks_1.3.ova 一.主 ...

  9. java基于NIO的分散读取文件,然后统一聚合后写入文件

    分散读取:对于一个文件,可以分散的读取数据,可以快速的读取,好比多个线程在分段同时读取: 聚合写入:为了提高效率,一般读取到的数据都是分散的,要快速写入,就需要把分散的数据聚集在一起,然后一块写入到文 ...

  10. ASP.NET中的请求验证

    这两天做项目的时候偶然发现项目中的保存功能的时候出现这样的异常:异常详细信息: System.Web.HttpRequestValidationException: 从客户端(XXXX)中检测到有潜在 ...