欧拉函数求和
来源:互联网 发布:揭阳网络广告公司 编辑:程序博客网 时间:2024/05/18 01:40
没错,傻X博主只是吸引你点进来的,我TM不会正解,60暴力送上
#include <cstdio>#include <iostream>using namespace std;const int N=99999999;int phi[N+10],prime[N+10];int tot;bool mark[N+10];long long getphi(int n){ phi[1]=1; long long ans=1; for(int i=2;i<=n;i++) { if(!mark[i]) { prime[++tot]=i; phi[i]=i-1;//性质1 ans+=phi[i]; } for(int j=1;j<=tot&&i*prime[j]<=n;j++) { mark[i*prime[j]]=1; if(!(i%prime[j])) { phi[i*prime[j]]=phi[i]*prime[j];//性质2 ans+=phi[i*prime[j]]; break; } else phi[i*prime[j]]=phi[i]*(prime[j]-1),ans+=phi[i*prime[j]]; } } return ans;}int main(){ int n; scanf("%d",&n); printf("%lld",getphi(n)); return 0;}
没有发现进度条不对吗!
往下看的人才是勇士啊,傻X博主其实给了正解。
前提
所以s(n)=(n*(n+1))/2-
s我们先预处理出1e7以内的,大的用上面的式子递归实现即可
#include <cstdio>#include <iostream>#define ll long longusing namespace std;const int N=1e7+1;ll phi[N+10],prime[N+10];int tot;bool mark[N+10];void getphi(int n){ phi[1]=1; for(int i=2;i<=n;i++) { if(!mark[i]) { prime[++tot]=i; phi[i]=i-1;//性质1 } for(int j=1;j<=tot&&i*prime[j]<=n;j++) { mark[i*prime[j]]=1; if(!(i%prime[j])) { phi[i*prime[j]]=phi[i]*prime[j];//性质2 break; } else phi[i*prime[j]]=phi[i]*(prime[j]-1); } } for(int i=2;i<=n;i++) phi[i]+=phi[i-1];}ll work(int n){ if(n<=N) return phi[n]; ll ans=0;int pos; for(int i=2;i<=n;i=pos+1) { pos=n/(n/i);//向下取整,很长一段是相同的 ans+=(pos-i+1)*work(n/i); } return (ll)n*(n+1)/2-ans;}int main(){ int n; getphi(N); scanf("%d",&n); printf("%lld",work(n)); return 0;}
阅读全文
1 0
- 欧拉函数求和
- 欧拉函数求和
- NYOJ 570 欧拉函数求和【欧拉函数求和】
- NYOJ - 欧拉函数求和
- NYOJ570---欧拉函数求和
- bzoj4805: 欧拉函数求和
- bzoj4805: 欧拉函数求和
- hdu 3501 欧拉函数求和
- Nyoj 570 欧拉函数求和
- nyoj 题目570 欧拉函数求和
- NYOJ 570 欧拉函数求和
- 51nod1239欧拉函数求和
- dlutoj 1008 欧拉函数求和
- BZOJ 4805 欧拉函数求和 数论
- BZOJ 4805(欧拉函数求和-杜教筛)
- HYSBZ 4805 欧拉函数求和
- bzoj 4805: 欧拉函数求和 杜教筛
- bzoj 4805: 欧拉函数求和
- hdu 4821 String(hash)
- abc
- Android O中Notification 的修改与其使用错误
- what a fuck!这是什么鬼东西?
- UVA
- 欧拉函数求和
- leetcode 363. Max Sum of Rectangle No Larger Than K 动态规划DP + 暴力循环
- POJ 2186 Popular Cows 笔记
- 如何解决maven搭建项目的时候,src/main/java无法建立的问题,提示信息The folder is already a source folder.
- qt不同窗口之间的切换
- 简单利用RecyclerView实现ListView的点击事件
- Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'val
- ie的png透明图片兼容性问题
- js鼠标滚动 mousewheel