hdu 2824 欧拉函数 O(nlogn) 和O(n)
来源:互联网 发布:qq飞车猛兽数据 编辑:程序博客网 时间:2024/05/20 09:21
裸题
O(nlogn):
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int maxn=3000000+100;int phi[maxn];void init() { for(int i=2;i<maxn;i++) phi[i]=i; for(int i=2;i<maxn;i++) if(phi[i]==i) for(int j=i;j<maxn;j+=i) phi[j]=(phi[j]/i)*(i-1);}int main() { int a,b; init(); while(scanf("%d%d",&a,&b)!=EOF) { ll ans=0; for(int i=a;i<=b;i++) ans+=(ll)phi[i]; printf("%lld\n",ans); } return 0;}
O(n):
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;const int maxn=3000000+10;/*线性筛O(n)时间复杂度内筛出maxn内欧拉函数值*/int m[maxn],phi[maxn],p[maxn],pt;//m[i]是i的最小素因数,p是素数,pt是素数个数void init() { phi[1]=1; int N=maxn; int k; for(int i=2; i<N; i++) { if(!m[i])//i是素数 p[pt++]=m[i]=i,phi[i]=i-1; for(int j=0; j<pt&&(k=p[j]*i)<N; j++) { m[k]=p[j]; if(m[i]==p[j]) { //为了保证以后的数不被再筛,要break phi[k]=phi[i]*p[j]; /*这里的phi[k]与phi[i]后面的∏(p[i]-1)/p[i]都一样(m[i]==p[j])只差一个p[j],就可以保证∏(p[i]-1)/p[i]前面也一样了*/ break; } else phi[k]=phi[i]*(p[j]-1);//积性函数性质,f(i*k)=f(i)*f(k) } }}int main() { int a,b; init(); while(scanf("%d%d",&a,&b)!=EOF) { ll ans=0; for(int i=a; i<=b; i++) { ans+=(ll)phi[i]; } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- hdu 2824 欧拉函数 O(nlogn) 和O(n)
- 欧拉函数O(sqrt(n))
- O(N)的素数筛选法和欧拉函数
- 欧拉函数o(n)求素数
- O(n)欧拉函数+素数筛选
- 求解单个欧拉函数板子(O(sqrt(n)))
- 欧拉函数表的O(NloglogN)和O(N)预处理
- 求子数组的最大和(O(n)和分治法O(nlogn))
- 求子数组的最大和(O(n)和分治法O(nlogn))
- 最长单调子序列(O(n^2) 和 O(nlogn) 算法)
- 第2周项目3-体验复杂度(1) O(n 2 )和O(nlogn)
- 单调递增子序列总结(O(n^2)和O(nlogn)算法)
- dijkstra算法O(n²) 堆优化O(nlogn)
- ACM:递归与分治,最大连续和,O(n3), O(n2), O(nlogn), O(n) 算法。
- o(1), o(n), o(logn), o(nlogn)
- 算法分析O(n), O(nlogn)...
- 算法分析O(n), O(nlogn)...
- hdu 3068 最长回文 (Manacher O(n) ) (扩展KMP和后缀数组也都可以做 O(nlogn))
- Linux 帮助命令
- QT的基本数据类型
- 生活中常见的操作系统
- Tensorflow-CNN学习以及实现
- STC15系列读取MPU6050陀螺仪角度加速度串口显示代码
- hdu 2824 欧拉函数 O(nlogn) 和O(n)
- assemble language学习(-)
- 汉诺塔递归算法的实现(python)
- 实例讲解getopt()函数的使用
- 404错误、405错误、500错误出错原因
- iOS 拨打电话
- Maven的生命周期阶段
- 一款好用的banner轮播图控件
- STC15F2K60S2/STC15系列读取MPU6050陀螺仪角度加速度串口显示程序代码