BZOJ:2190: [SDOI2008]仪仗队
生活随笔
收集整理的這篇文章主要介紹了
BZOJ:2190: [SDOI2008]仪仗队
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題解:歐拉函數
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std; int n;
int ans=; int phi[];
int vis[]={};
int prime[],cntprime=;
int Lineshake(){
vis[]=;phi[]=;
for(int i=;i<=n;++i){
if(!vis[i]){
prime[++cntprime]=i;
phi[i]=i-;
}
for(int j=;(j<=cntprime)&&(i*prime[j]<=n);++j){
vis[i*prime[j]]=;
if(i%prime[j]==){
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
} int main(){
scanf("%d",&n);
Lineshake();
for(int i=;i<=n-;++i)ans=ans+phi[i]*;
printf("%d\n",ans+);
return ;
}
總結
以上是生活随笔為你收集整理的BZOJ:2190: [SDOI2008]仪仗队的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Luogu P1439】最长公共子序列
- 下一篇: ACM公选课第五节贪心4.14-5.4补