51nod 1239 欧拉函数之和
来源:互联网 发布:淘宝退款成功后钱在哪 编辑:程序博客网 时间:2024/06/05 01:55
51nod 1239 欧拉函数之和
链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239
φ∗id1=id0
Sφ(n)=n−∑i=2niSφ(⌊ni⌋)
#include <algorithm>#include <string.h>#include <stdio.h>#include <cmath>#define MAXN 10000000#define SQRT 111111using namespace std;typedef long long LL;const LL P=1e9+7;int phi[MAXN];int tmp[SQRT];void clat(int d,LL n){ int m=sqrt(n)+1,ans=0; for(int L=1;L<m;L++) { ans+=(LL)phi[L]*((n/L-n/(L+1))%P)%P; if(ans>=P)ans-=P; } for(int i=(int)(n/m);i>1;i--) { LL u=(n/i); if(u<MAXN) ans+=phi[u]; else ans+=tmp[i*d]; if(ans>=P)ans-=P; } if(n&1) n=(((n+1)>>1)%P)*(n%P)%P; else n=((n>>1)%P)*((n+1)%P)%P; tmp[d]=(n-ans+P)%P;}int solve(LL n){ if(n<MAXN)return phi[n]; for(LL i=(n/MAXN);i;i--) clat((int)i,n/i); return tmp[1];}int main (){ phi[1]=1; for(int i=2;i<MAXN;i++) { if(phi[i])continue; phi[i]=i-1; LL size=(LL)i*i; for(int j=i<<1;(LL)j<size&&j<MAXN;j+=i) phi[j]=(phi[j])?phi[j]*phi[i]:phi[i]; if(size>=MAXN)continue; for(int j=i*i,k=i;j<MAXN;j+=i,k++) if(k%i) phi[j]=(phi[k])?phi[k]*phi[i]:phi[i]; else phi[j]=(phi[k])?phi[k]*i:i; } for(int i=1;i<MAXN;i++) { phi[i]+=phi[i-1]; if(phi[i]>=P)phi[i]-=P; } LL n; scanf("%lld",&n); printf("%d\n",solve(n)); 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 最大公约数之和 数论 欧拉函数
- 双鸭山大学?
- POJ 1364 King (差分约束)
- 算法 卡特兰Catalan数
- Eigen
- Docker切换到国内下载源方法
- 51nod 1239 欧拉函数之和
- SimpleAdapter中使用Drawable和Bitmap对象的方法
- python_lintcode_109数字三角形_50数组剔除元素后的乘积
- spark调优
- 【React native】 平时经常遇到的报错
- centos6或者7无图形界面安装oracle11g
- selenium常用函数
- Activity 的Dialog 样式使用
- hdu1232 畅通工程