博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3512: DZY Loves Math IV
阅读量:4563 次
发布时间:2019-06-08

本文共 2128 字,大约阅读时间需要 7 分钟。

Description

给定n,m,求

题面
模10^9+7的值。

Solution

\(S(n,m)\) 表示 \(\sum_{i=1}^{m}\phi(n*i)\)

\(Ans=\sum_{i=1}^{n}S(i,m)\)
\(S(n,m)=\sum_{i=1}^{m}\phi(n*i)\)

如果 \(\mu(n)!=0\)

则有 \(\sum_{i=1}^{m}\phi(\frac{n}{gcd(i,n)})*\phi(i)*gcd(i,n)\) (因为要保证除完\(gcd\)之后,两数不含相同的质因子,所以 \(\mu(n)!=0\))
\(\sum_{i=1}^{m}\phi(\frac{n}{gcd(i,n)})*\phi(i)*\sum_{d|i,d|n}\phi(d)\)
因为第一项和第三项是互质的 , 所以可以合并.
\(\sum_{i=1}^{m}\phi(i)*\sum_{d|n,d|i}\phi(\frac{n}{d})\)
\(\sum_{d=1}^{n}\phi(\frac{n}{d})*\sum_{i=1}^{\frac{m}{d}}\phi(d*i)\)
\(\sum_{d=1}^{n}\phi(\frac{n}{d})*S(d,\lfloor\frac{m}{d}\rfloor)\)
递归处理即可

如果 \(\mu(n)=0\)

我们直接提出 \(n\) 的多出的质因子之积 \(a\),使得 \(\mu(\frac{n}{a})!=0\)
那么 \(S(n,m)=\sum_{i=1}^{m}\phi(n*i)\) 中也可以提出 \(a\) 了,因为相同的质因子只会被算一次
根据定义式 \(\phi(n)=n*\Pi p_i\),所以 \(a\) 唯一的贡献就是使前面的 \(n\) 乘了个 \(a\)
\(a*S(n,m)=\sum_{i=1}^{m}\phi(\frac{n}{a}*i)=a*S(\frac{n}{a},m)\)
递归处理即可

边界条件 \(m=1​\) 时,结果为 \(\phi(n)​\), \(n=1​\) 时,跑一个杜教筛就行了

#include
using namespace std;const int N=1e5+10,mod=1e9+7;int n,prime[N],num=0,m,phi[N],mu[N],pre[N],la[N],s[N];bool vis[N];void priwork(){ phi[1]=s[1]=1; for(int to,i=2;i
1){ if(pre[x]==last)la[i]*=pre[x]; last=pre[x];x/=pre[x]; } }}map
S[N],T;inline int calc(int n){ if(n
>1)%mod; for(int i=2,r;i<=n;i=r+1){ r=n/(n/i); ret=(ret-1ll*calc(n/i)*(r-i+1))%mod; } if(ret<0)ret+=mod; return T[n]=ret;}inline int solve(int n,int m){ if(m==1)return phi[n]; if(n==1)return calc(m); if(S[n].find(m)!=S[n].end())return S[n][m]; if(!mu[n])return 1ll*la[n]*solve(n/la[n],m)%mod; int ret=0,lim=min(m,(int)sqrt(n)); for(int i=1;i<=lim;i++){ if(n%i==0){ if(i*i!=n)ret=(ret+1ll*phi[n/i]*solve(i,m/i)+1ll*phi[i]*solve(n/i,m/(n/i)))%mod; else ret=(ret+1ll*phi[n/i]*solve(i,m/i))%mod; } } return S[n][m]=ret;}int main(){ freopen("pp.in","r",stdin); freopen("pp.out","w",stdout); cin>>n>>m; priwork(); int ans=0; for(int i=1;i<=n;i++)ans=(ans+solve(i,m))%mod; printf("%d\n",ans); return 0;}

转载于:https://www.cnblogs.com/Yuzao/p/8546115.html

你可能感兴趣的文章
stringstream
查看>>
【转】HDU 6194 string string string (2017沈阳网赛-后缀数组)
查看>>
前后端分离
查看>>
渗透测试学习 一、环境搭建
查看>>
处理图片透明操作
查看>>
Postman-OAuth 2.0授权
查看>>
mac pycharm打不开问题
查看>>
iOS项目之苹果审核被拒
查看>>
java多态及tostring方法与equals方法的重写
查看>>
python 获取远程设备ip地址
查看>>
JDBC 第五课 —— 小项目的界面升级
查看>>
团队作业3——需求改进&系统设计
查看>>
返回json格式时间,解析时间
查看>>
线程并发-栈限制&ThreadLocal
查看>>
[转]Understand QoS at OpenSwitch
查看>>
vue中后台请求数据配置
查看>>
NIS服务器详解
查看>>
[备忘] 网络监控程序
查看>>
keepalived 高可用
查看>>
java_web学习(1)理解JavaBean
查看>>