【BZOJ3512】DZY Loves Math IV
题目大意
给出 n , m n,m n,m,求 ∑ i = 1 n ∑ j = 1 m ϕ ( i j ) \sum\limits_{i=1}^n\sum\limits_{j=1}^m\phi(ij) i=1∑nj=1∑mϕ(ij)
1 ≤ n ≤ 1 0 5 , 1 ≤ m ≤ 1 0 9 1\leq n\leq 10^5,1\leq m\leq 10^9 1≤n≤105,1≤m≤109,答案模 1 0 9 + 7 10^9+7 109+7。
题解
前置知识:杜教筛
因为 n n n比较小,所以我们可以直接枚举 n n n。
设 f ( n , m ) = ∑ i = 1 m ϕ ( n i ) f(n,m)=\sum\limits_{i=1}^m\phi(ni) f(n,m)=i=1∑mϕ(ni)
将 n n n分为若干个质数的乘积, n = p 1 a 1 p 2 a 2 ⋯ p k a k n=p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k} n=p1a1p2a2⋯pkak,令 p = p 1 a 1 − 1 p 2 a 2 − 1 ⋯ p k a k − 1 p=p_1^{a_1-1}p_2^{a_2-1}\cdots p_k^{a_k-1} p=p1a1−1p2a2−1⋯pkak−1, q = n / p q=n/p q=n/p
∑ i = 1 m ϕ ( n i ) = ∑ i = 1 m p ϕ ( q i ) = ∑ i = 1 m p ϕ ( q gcd ( q , i ) × i ) × gcd ( q , i ) \sum\limits_{i=1}^m\phi(ni)=\sum\limits_{i=1}^mp\phi(qi)=\sum\limits_{i=1}^mp\phi(\dfrac{q}{\gcd(q,i)}\times i)\times \gcd(q,i) i=1∑mϕ(ni)=i=1∑mpϕ(qi)=i=1∑mpϕ(gcd(q,i)q×i)×gcd(q,i)
因为 ϕ ( i ) \phi(i) ϕ(i)为积性函数,所以 ϕ ( q gcd ( q , i ) × i ) = ϕ ( q gcd ( q , i ) ) × ϕ ( i ) \phi(\dfrac{q}{\gcd(q,i)}\times i)=\phi(\dfrac{q}{\gcd(q,i)})\times\phi(i) ϕ(gcd(q,i)q×i)=ϕ(gcd(q,i)q)×ϕ(i),原式变为
p ∑ i = 1 m ϕ ( q gcd ( q , i ) ) × ϕ ( i ) × gcd ( q , i ) p\sum\limits_{i=1}^m\phi(\dfrac{q}{\gcd(q,i)})\times\phi(i)\times \gcd(q,i) pi=1∑mϕ(gcd(q,i)q)×ϕ(i)×gcd(q,i)
由欧拉函数的性质, n = ∑ d ∣ n ϕ ( n d ) n=\sum\limits_{d|n}\phi(\dfrac nd) n=d∣n∑ϕ(dn),可得
p ∑ i = 1 m ϕ ( i ) ϕ ( q gcd ( q , i ) ) ∑ j ∣ i , j ∣ q ϕ ( gcd ( q , i ) j ) p\sum\limits_{i=1}^m\phi(i)\phi(\dfrac{q}{\gcd(q,i)})\sum\limits_{j|i,j|q}\phi(\dfrac{\gcd(q,i)}{j}) pi=1∑mϕ(i)ϕ(gcd(q,i)q)j∣i,j∣q∑ϕ(jgcd(q,i))
因为 q gcd ( q , i ) \dfrac{q}{\gcd(q,i)} gcd(q,i)q与 gcd ( q , i ) \gcd(q,i) gcd(q,i)互质( q = p 1 p 2 ⋯ p k q=p_1p_2\cdots p_k q=p1p2⋯pk,同一个质数要不不出现,要不出现在 q gcd ( q , i ) \dfrac{q}{\gcd(q,i)} gcd(q,i)q或 gcd ( q , i ) \gcd(q,i) gcd(q,i),不可能两个都出现)而 ϕ \phi ϕ为积性函数,所以 ϕ ( q gcd ( q , i ) ) × ϕ ( gcd ( q , i ) j ) = ϕ ( q j ) \phi(\dfrac{q}{\gcd(q,i)})\times \phi(\dfrac{\gcd(q,i)}{j})=\phi(\dfrac qj) ϕ(gcd(q,i)q)×ϕ(jgcd(q,i))=ϕ(jq),可得
p ∑ i = 1 m ϕ ( i ) ∑ j ∣ i , j ∣ q ϕ ( q j ) p\sum\limits_{i=1}^m\phi(i)\sum\limits_{j|i,j|q}\phi(\dfrac qj) pi=1∑mϕ(i)j∣i,j∣q∑ϕ(jq)
枚举 j j j得
p ∑ j ∣ q ϕ ( q j ) ∑ i = 1 ⌊ m j ⌋ ϕ ( i j ) p\sum\limits_{j|q}\phi(\dfrac qj)\sum\limits_{i=1}^{\lfloor\frac mj\rfloor}\phi(ij) pj∣q∑ϕ(jq)i=1∑⌊jm⌋ϕ(ij)
因为 f ( n , m ) = ∑ i = 1 m ϕ ( n i ) f(n,m)=\sum\limits_{i=1}^m\phi(ni) f(n,m)=i=1∑mϕ(ni),所以
p ∑ j ∣ q ϕ ( q j ) × f ( j , ⌊ m j ⌋ ) p\sum\limits_{j|q}\phi(\dfrac qj)\times f(j,\lfloor\dfrac mj\rfloor) pj∣q∑ϕ(jq)×f(j,⌊jm⌋)
于是我们就得到了递推式
f ( n , m ) = p ∑ j ∣ q ϕ ( q j ) × f ( j , ⌊ m j ⌋ ) f(n,m)=p\sum\limits_{j|q}\phi(\dfrac qj)\times f(j,\lfloor\dfrac mj\rfloor) f(n,m)=pj∣q∑ϕ(jq)×f(j,⌊jm⌋)
预处理出前 n 2 3 n^{\frac 23} n32个 ϕ ( i ) \phi(i) ϕ(i)并求前缀和,用杜教筛 ϕ ( i ) \phi(i) ϕ(i)的前缀和,利用 ϕ \phi ϕ的前缀和作差得出每个 ϕ ( q j ) \phi(\dfrac qj) ϕ(jq),然后就可以用杜教筛求 f ( n , m ) f(n,m) f(n,m)了。
注意 f ( n , m ) f(n,m) f(n,m)的一些特殊值。
- 当 n = 1 n=1 n=1时, f ( n , m ) = ∑ i = 1 m ϕ ( i ) f(n,m)=\sum\limits_{i=1}^m\phi(i) f(n,m)=i=1∑mϕ(i)
- 当 m = 1 m=1 m=1时, f ( n , m ) = ϕ ( n ) f(n,m)=\phi(n) f(n,m)=ϕ(n)
最终的答案为 ∑ i = 1 n f ( i , m ) \sum\limits_{i=1}^nf(i,m) i=1∑nf(i,m)。
code
#include<bits/stdc++.h>
using namespace std;
const int N=2000000;
const long long mod=1000000007;
int z[N+5],p[N+5],mn[N+5];
long long ans,ph[N+5],s[N+5];
map<long long,long long>sph,sum[100005];
void init(){ph[1]=1;for(int i=2;i<=N;i++){if(!z[i]){p[++p[0]]=i;ph[i]=i-1;mn[i]=i;}for(int j=1;j<=p[0]&&i*p[j]<=N;j++){z[i*p[j]]=1;mn[i*p[j]]=p[j];if(i%p[j]==0){ph[i*p[j]]=ph[i]*p[j]%mod;break;}ph[i*p[j]]=ph[i]*(p[j]-1)%mod;}}for(int i=1;i<=N;i++){s[i]=(s[i-1]+ph[i])%mod;}
}
long long gt(int n){if(n<=N) return s[n];if(sph.count(n)) return sph[n];long long re=0;for(int l=2,r;l<=n;l=r+1){r=min(n,n/(n/l));re=(re+1ll*(r-l+1)*gt(n/l)%mod)%mod;}re=(1ll*n*(n+1)/2-re+mod)%mod;return sph[n]=re;
}
long long djs(int n,int m){if(!m) return 0;if(n==1) return gt(m);if(m==1) return ph[n];if(sum[n].count(m)) return sum[n][m];long long re=0;vector<int>v;int p=1,q=1,t=n,l=0;while(t>1){int x=mn[t];q*=x;t/=x;v.push_back(x);++l;while(t%x==0){p*=x;t/=x;}}for(int i=0;i<1<<l;i++){int vt=1;for(int j=0;j<l;j++)if(i&(1<<j)) vt*=v[j];re=(re+ph[q/vt]*djs(vt,m/vt)%mod)%mod;}return sum[n][m]=re*p%mod;
}
int main()
{int n,m;init();scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){ans=(ans+djs(i,m))%mod;}printf("%lld",ans);return 0;
}
【BZOJ3512】DZY Loves Math IV相关推荐
- 【BZOJ3512】DZY Loves Math IV(杜教筛)
[BZOJ3512]DZY Loves Math IV(杜教筛) https://www.cnblogs.com/cjyyb/p/10165338.html
- 【BZOJ3512】 DZY Loves Math IV
题意:(第n+1次)略 首先转换:Ans(n,m)=∑i=1n∑j=1mφ(i⋅j)设s(n,m)=∑i=1mφ(n⋅i)那么Ans(n,m)=∑i=1ns(i,m)每次从1到n枚举i,然后考虑:s( ...
- 【BZOJ3309】DZY Loves Math 解题报告
[BZOJ3309]DZY Loves Math Description 对于正整数\(n\),定义\(f(n)\)为\(n\)所含质因子的最大幂指数.例如\(f(1960)=f(2^3×5^1×7^ ...
- 【BZOJ3309】DZY Loves Math
3309: DZY Loves Math Time Limit: 20 Sec Memory Limit: 512 MB Submit: 411 Solved: 161 [Submit][Status ...
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- 【题解】DZY Loves Math
sol: 卷积函数求通项 + 莫比乌斯函数 . 我们只需要求到 g(n)=∑d∣nf(d)μ(nd)g(n)=\sum_{d|n}f(d)\mu(\frac{n}{d})g(n)=∑d∣nf(d)μ ...
- 【BZOJ3309】DZY Loves Math(线性筛)
题目: BZOJ 3309 分析: 首先,经过一番非常套路的莫比乌斯反演(实在懒得写了),我们得到: \[\sum_{T=1}^n \sum_{d|T}f(d)\mu(\frac{T}{d})\lfl ...
- 【CF446B】 DZY Loves Modification
题目 题目描述 As we know, DZY loves playing games. One day DZY decided to play with a n×m n×m matrix. To b ...
- bzoj 3512: DZY Loves Math IV【欧拉函数+莫比乌斯函数+杜教筛】
参考:http://blog.csdn.net/wzf_2000/article/details/54630931 有这样一个显然的结论:当\( |\mu(n)|==1 \)时,\( \phi(nk) ...
最新文章
- 谁说技术男不适合养猫!90后程序员2天做出猫咪情绪识别软件
- php 控制网站跳转,迅睿CMS 重写控制网站自动跳转函数
- 在新基建风口上,华为“鲲鹏”这次要翱翔了
- nginx的upstream问题记录
- python中counter_Python collections模块中counter()的详细说明,Pythoncollections,之,Counter,详解...
- 乐迪机器人开热点_碧桂园餐饮机器人量产!预计年产能达4000台
- javascript学习系列(23):数组中的解构方法
- html打印代码_惊呆了,我的 Python 代码里面出现了薛定谔的 Bug
- 怎样通过Java程序提交yarn的mapreduce计算任务
- .Net Webapi SignalR与微信小程序的交互
- ckdeitor的使用方法
- 计算机课程设计心得体会及总结,课程设计心得体会
- editText属性
- 前端面试(面试官篇)
- 计算机网络 华东理工大学 2020期末考试
- 使用Python构造数据包
- PyCharm选择性忽略PEP8代码风格警告信息
- windows下sass开发环境的搭建
- Dao,Service,Controller层作用
- 哪个牌子蓝牙耳机打电话清晰?通话最清晰的蓝牙耳机推荐