[欧拉函数] bzoj2190: [SDOI2008]仪仗队
2018-03-29 20:56
399 查看
bzoj2190: [SDOI2008]仪仗队https://www.lydsy.com/JudgeOnline/problem.php?id=2190
欧拉函数
可以看出能够看到的点都是不会被前面的点挡住的(<-废话)
那就是求N内有多少个质数
直接欧拉函数跑线性筛选就ok
满足左右对称答案记得乘2
欧拉函数
可以看出能够看到的点都是不会被前面的点挡住的(<-废话)
那就是求N内有多少个质数
直接欧拉函数跑线性筛选就ok
满足左右对称答案记得乘2
#include <cstdio> #include <cstring> using namespace std; int pri[41000],prime[41000],pr,n; bool v[41000]; void get() { for (int i=2;i<=n;i++) { if (v[i]) { prime[++pr]=i; pri[i]=i-1; } for (int j=1;(j<=pr)&&(prime[j]*i<=n);j++) { v[i*prime[j]]=false; if (i%prime[j]==0) { pri[i*prime[j]]=pri[i]*prime[j]; break; } else { pri[i*prime[j]]=pri[i]*(prime[j]-1); } } } } int main() { scanf("%d",&n); memset(v,true,sizeof(v)); get(); int ans=3; for (int i=1;i<n;i++) ans+=pri[i]*2; if (n==1) printf("1\n"); else printf("%d\n",ans); return 0; }
相关文章推荐
- 【BZOJ】2190: [SDOI2008]仪仗队(欧拉函数)
- BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
- [bzoj 2190] [SDOI2008]仪仗队:欧拉函数,线性筛
- bzoj2190 [SDOI2008]仪仗队(欧拉函数)
- [BZOJ 2190][SDOI2008]仪仗队:欧拉函数
- bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
- [bzoj 2190][SDOI2008]仪仗队(线性筛欧拉函数)
- BZOJ 2190 [SDOI2008]仪仗队——欧拉函数
- BZOJ 2190([SDOI2008]仪仗队-O(n)线性筛欧拉函数)
- BZOJ-2190-仪仗队-SDOI2008-欧拉函数
- BZOJ-2190-仪仗队-SDOI2008-欧拉函数
- BZOJ2190 [SDOI2008]仪仗队(欧拉函数)
- BZOJ 2190: [SDOI2008]仪仗队 欧拉函数
- bzoj 2190: [SDOI2008]仪仗队 -- 欧拉函数
- 【bzoj2190】[SDOI2008]仪仗队 线性筛欧拉函数
- 【bzoj2190】【sdoi2008】【仪仗队】【欧拉函数】
- [BZOJ2190][SDOI2008]仪仗队(欧拉函数|莫比乌斯反演)
- bzoj 2190 [SDOI2008]仪仗队(欧拉函数)
- [BZOJ 2190] SDOI 2008 仪仗队 · 欧拉函数
- BZoj 2190: [SDOI2008]仪仗队【欧拉函数】