• [模板]洛谷T2158 仪仗队 欧拉函数


     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<ctime>
     6 #include<cstdlib>
     7 
     8 #include<string>
     9 #include<stack>
    10 #include<queue>
    11 #include<vector>
    12 #include<algorithm>
    13 #include<map>
    14 #include<set>
    15 
    16 #define inf 2147483647
    17 #define ri register int
    18 #define ll long long
    19 
    20 using namespace std;
    21 
    22 inline void read(int &x){
    23     x=0;
    24     char t=getchar();
    25     bool f=0;
    26     
    27     while(t<'0' || t>'9'){
    28         if(t=='-')f=1;
    29         t=getchar();
    30     }
    31     
    32     while(t>='0' && t<='9'){
    33         x=(x<<3)+(x<<1)+t-'0';
    34         t=getchar();
    35     }
    36     
    37     if(f)x=-x;
    38 }
    39 
    40 inline void Euler();
    41 
    42 int a[40005];  //最小质因数 
    43 int pri[10005],p=0;  //质数表 
    44 int f[40005];  //phi
    45 
    46 int n,ans=0;
    47 
    48 int main(){
    49     read(n);
    50     
    51     n--;
    52     
    53     Euler();
    54     
    55     for(ri i=2;i<=n;i++)ans+=f[i];
    56     
    57     ans=(ans<<1)+3;
    58     
    59     printf("%d
    ",ans);
    60     
    61     return 0;
    62 }
    63 
    64 inline void Euler(){
    65     for(ri i=2;i<=n;i++){
    66         if(!a[i]){
    67             p++;
    68             pri[p]=i;
    69             a[i]=i;
    70         }
    71         
    72         for(ri j=1;j<=p && i*pri[j]<=n;j++){
    73             a[i*pri[j]]=pri[j];
    74             if(i%pri[j]==0)break;
    75         }
    76     }
    77     
    78     f[1]=1;
    79     
    80     for(ri i=2;i<=n;i++){
    81         if(i%(a[i]*a[i])==0)f[i]=f[i/a[i]]*a[i];
    82         else f[i]=f[i/a[i]]*(a[i]-1);
    83     }
    84 }
  • 相关阅读:
    Microsoft Word 段前距设置和页眉设置
    JavaScript 跨域小总结
    JavaScript 闭包系列二(匿名函数及函数的闭包)

    JavaScript 变量作用域
    JavaScript 闭包系列一
    JavaScript 继承
    JavaScript 对象的创建
    MySQL(2): 窗口函数备份与恢复性能优化权限管理
    组建LAN
  • 原文地址:https://www.cnblogs.com/running-coder-wfh/p/7862072.html
Copyright © 2020-2023  润新知