和bzoj 3944比较像,但是时间卡的更死

设\( f(n)=\sum_{d|n}\phi(d) g(n)=\sum_{i=1}^{n}f(i) s(n)=\sum_{i=1}^{n}\phi(i) \),然后很显然对于mu\( g(n)=1\),对于\( g(n)=n*(n+1)/2 \),然后可以这样转化一下:

\[g(n)=\sum_{i=1}^{n}\sum_{d|n}\phi(d)
\]

\[=\sum_{d=1}^{n}\phi(d)\left \lfloor \frac{n}{d} \right \rfloor
\]

\[=\sum_{d=1}^{n}s(\left \lfloor \frac{n}{d} \right \rfloor)
\]

\[s(n)=g(n)-\sum_{d=2}^{n}s(\left \lfloor \frac{n}{d} \right \rfloor)
\]

然后递归求解即可。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const long long N=5000005,m=5000000,mod=1e9+7,inv2=500000004;
long long n,phi[N],q[N],tot,p[N];
bool v[N];
long long getp(long long x)
{
return (x<=m)?phi[x]:p[n/x];
}
void wk(long long x)
{//cout<<x<<endl;
if(x<=m)
return;
long long t=n/x;
if(v[t])
return;
v[t]=1;
long long w=x%mod;
p[t]=w*(w+1)%mod*inv2%mod;//cout<<x<<" "<<t<<endl;
for(long long i=2,la=1;la<x;i=la+1)
{
la=x/(x/i);
wk(x/i);
p[t]=(p[t]-getp(x/i)*(la-i+1)%mod)%mod;
}
}
int main()
{
phi[1]=1;
for(long long i=2;i<=m;i++)
{
if(!v[i])
{
q[++tot]=i;
phi[i]=i-1;
}
for(long long j=1;j<=tot&&i*q[j]<=m;j++)
{
long long k=i*q[j];
v[k]=1;
if(i%q[j]==0)
{
phi[k]=phi[i]*q[j];
break;
}
phi[k]=phi[i]*(q[j]-1);
}
}
for(long long i=2;i<=m;i++)
phi[i]=(phi[i]+phi[i-1])%mod;
scanf("%lld",&n);//cout<<n<<" "<<n%mod<<" "<<(n+1)%mod<<endl;
//g=(n%mod)*((n+1)%mod)%mod*inv2%mod;//cout<<g<<endl;
if(n<=m)
printf("%lld\n",phi[n]);
else
{
memset(v,0,sizeof(v));
wk(n);
printf("%lld\n",(p[1]%mod+mod)%mod);
}
return 0;
}

最新文章

  1. Java线程池使用说明
  2. 形象的讲解angular中的$q与promise(转)
  3. ProcDump
  4. 高性能MySQL——第一章MySQL的架构与历史
  5. 让DJANGO里的get_success_url定义的reverse_lazy带参数跳转
  6. 安装IIS之后运行aspx 显示“服务器应用程序不可用” 解决办法
  7. poj City Horizon (线段树+二分离散)
  8. SharePoint 2010 母版页制作的简单介绍
  9. SQL删除重复行和查询所有大于某成绩的语句分析
  10. js获取页面名称
  11. 两台linux机器时间同步
  12. hdu1848 Fibonacci again and again(SG游戏功能)
  13. 使用prismjs为网站添加代码高亮功能
  14. Mahout分布式运行实例:基于矩阵分解的协同过滤评分系统(一个命令实现文件格式的转换)
  15. 小甲鱼OD学习第12讲
  16. android沉浸式状态栏的实现
  17. Python 3.5 filter
  18. 亿级流量场景下,大型缓存架构设计实现【1】---redis篇
  19. npm——安装教程、安装vue脚手架
  20. ZJUT 地下迷宫 (高斯求期望)

热门文章

  1. oracle字段的所有类型
  2. SYSTEM 表空间管理及备份恢复
  3. Apache 处理svg工具包Apache(tm) Batik SVG Toolkit
  4. sublime text 3(Build 3103)最新注冊码
  5. Hibernate复习之Hibernate基本介绍
  6. 怎样扩展EasyUI在页面中马上显示选中的本地图片
  7. sudo 用户添加
  8. Angular2.x-服务
  9. 性能监控 -- 中间件性能监控【Weblogic控制台】
  10. 开发:异常收集之 DB2建表相关问题