zoukankan      html  css  js  c++  java
  • bzoj 2818: Gcd

     1 #include<cstdio>
     2 #include<iostream>
     3 #define M 10000009
     4 #define ll long long
     5 int tot,zhan[M],n,f[M];
     6 ll sum[M],ans;
     7 void ou()
     8 {
     9     sum[1]=1;
    10     for(int i=2;i<=n;i++)
    11       {
    12         if(!f[i])
    13           {
    14             sum[i]=i-1;
    15             zhan[++tot]=i;
    16           }
    17         for(int j=1;j<=tot;j++)
    18           {
    19             if(zhan[j]*i>n)
    20               break;
    21             f[zhan[j]*i]=1;
    22             if(i%zhan[j])
    23               sum[i*zhan[j]]=sum[i]*sum[zhan[j]];
    24             else
    25               sum[i*zhan[j]]=sum[i]*zhan[j];
    26           }
    27       }
    28     return;
    29 }
    30 int main()
    31 {
    32     scanf("%d",&n);
    33     ou();
    34     for(int i=1;i<=n;i++)
    35       sum[i]+=sum[i-1];
    36     for(int i=1;i<=tot;i++)
    37       ans+=2*sum[n/zhan[i]]-1;
    38     printf("%lld
    ",ans);
    39     return 0;
    40 }

    枚举每个质数,转化后求欧拉函数。

  • 相关阅读:
    uva 532
    uva 10557
    uva 705
    uva 784
    uva 657
    uva 572
    uva 10562
    usa物价统计
    2019/6/30,道歉书
    名词收集
  • 原文地址:https://www.cnblogs.com/xydddd/p/5308971.html
Copyright © 2011-2022 走看看