[杜教筛] 51Nod 1239: 欧拉函数之和
来源:互联网 发布:手机拍摄淘宝照片 编辑:程序博客网 时间:2024/06/04 17:45
题意
求
题解
模板题,取1与
#include<cstdio>#include<map>#include<cstring>#include<algorithm>#include <tr1/unordered_map> using namespace std;using namespace std::tr1; const int maxn=1000005, N=1000000, MOD=1000000007, inv=500000004; typedef long long LL;int Q; LL p[maxn],phi[maxn];bool vis[maxn];void get_phi(){ memset(vis,1,sizeof(vis)); phi[1]=1; for(int i=2;i<=N;i++){ if(vis[i]) p[++p[0]]=i, phi[i]=i-1; for(int j=1;j<=p[0]&&p[j]*i<=N;j++){ vis[p[j]*i]=false; if(i%p[j]==0){ phi[p[j]*i]=phi[i]*p[j]%MOD; break; } phi[p[j]*i]=phi[i]*phi[p[j]]%MOD; } } for(int i=1;i<=N;i++) (phi[i]+=phi[i-1])%=MOD;}unordered_map< LL, LL > lst; LL Sum(LL n){ if(n<=N) return phi[n]; if(lst.find(n)!=lst.end()) return lst[n]; LL res=n%MOD*((1+n)%MOD)%MOD*inv%MOD; for(LL i=2,nxt;i<=n;i=nxt+1){ nxt=n/(n/i); (res+=MOD-Sum(n/i)*(nxt-i+1)%MOD)%=MOD; } return lst[n]=res;}int main(){ freopen("51nod1239.in","r",stdin); freopen("51nod1239.out","w",stdout); get_phi(); LL n; scanf("%lld",&n); printf("%lld\n",(Sum(n)+MOD)%MOD); return 0;}
阅读全文
0 0
- 【51Nod 1239】欧拉函数之和
- 51nod 1239欧拉函数之和
- 【51NOD 1239】欧拉函数之和
- 51nod 1239 欧拉函数之和
- [51NOD]1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51Nod-1239-欧拉函数之和
- 51Nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- 51nod 1239 欧拉函数之和
- [杜教筛模板] 51Nod 1239 欧拉函数之和
- 51 NOD 1239 欧拉函数之和(杜教筛)
- [杜教筛] 51Nod 1239: 欧拉函数之和
- 51nod-1040-最大公约数之和(欧拉函数)
- 51NOD 1040 最大公约数之和(分析 + 欧拉函数)
- 51nod-1040-1040 最大公约数之和(欧拉函数)
- 51NOD 1040 1040 最大公约数之和 数论 欧拉函数
- css3中@font-face
- struts2_拦截器的使用
- 在 Angular 项目中添加 clean-blog 模板
- C++实训 单元四 指针
- EL表达式及自定义标记
- [杜教筛] 51Nod 1239: 欧拉函数之和
- elasticsearch5.4和5.X安装和elasticsearch head插件安装
- mysql中bigint、int、mediumint、smallint与tinyint的取值范围
- matlab车牌识别小程序
- OpenCV2.4.9+VS2013环境配置及“fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突”的解决
- Linux程序执行自动载入用户参数
- 中报业绩预告:这些公司股价超跌业绩却大增20170703
- OpenCV--绘制直方图&直方图均衡
- 深度学习结合非局部均值滤波的图像去噪算法