点此看题面

大致题意: 求\(\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. Azure ARM (23) Azure Policy使用

    <Windows Azure Platform 系列文章目录> 在之前的文档中,我们介绍了Azure Policy的使用场景. 本章我们介绍如何创建和使用Azure Policy. 模拟场 ...

  2. SQL Server 通过“with as”方法查询树型结构

    一.with as 公用表表达式 类似VIEW,但是不并没有创建对象,WITH  AS 公用表表达式不创建对象,只能被后随的SELECT语句,其作用: 1. 实现递归查询(树形结构) 2. 可以在一个 ...

  3. WPF-介绍一款能够自动格式化XAML界面代码的的插件

    因为之前有小伙伴问格式化XAMl的快捷键按钮,所以在这里分享一款格式化XAMl的插件,非常好用. 直接在工具-->扩展和更新里搜索XamlStyler下载安装即可. 安装后按CTRL+S保存后就 ...

  4. 对try catch finally的理解

    对try catch finally的理解1.finally  总是会运行的,即使在catch中thorw抛出异常了. 2.finally 在 return后没有结束,而是继续运行finally 2. ...

  5. Lambda(一)lambda表达式初体验

    Lambda(一)lambda表达式初体验 Lambda引入 : 随着需求的不断改变,代码也需要随之变化 需求一:有一个农场主要从一堆苹果中挑选出绿色的苹果 解决方案:常规做法,source code ...

  6. 浅析Java中线程组(ThreadGroup类)

    Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的 ...

  7. TensorFlow、numpy、matplotlib、基本操作

    一.常量的定义 import tensorflow as tf #类比 语法 api 原理 #基础数据类型 运算符 流程 字典 数组 data1 = tf.constant(2,dtype=tf.in ...

  8. 前端开发CSS3——使用方式和选择器

    CSS是Cascading Style Sheets(层叠样式表)的简写,用于修饰文档的语言,可以修饰HTML.XML.SVN.每个语言都有每个语法的规则:CSS声明.CSS声明块.CSS选择器.CS ...

  9. 在ie下转换时间戳出错

    在将特定格式转换为时间戳的时候,我们通常的做法事new Date(str).getTime(), 这个方法在谷歌上是可行的,但是在ie上需要注意一点,就是这个str如果是“2019-11-15”的格式 ...

  10. Windows+Qt+MinGW使用gRPC

    本文参考博客文章Qt gRPC 简单应用进行了亲自尝试,特此记录以下过程,为后人提供经验.我的环境:Windows10 x64需要依赖MSYS2环境(一个类Unix环境,包管理器)MSYS2 gith ...