zoukankan      html  css  js  c++  java
  • UVa11426

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <iomanip>
     4 #include <cstring>
     5 #include <cstdlib>
     6 #include <climits>
     7 #include <sstream>
     8 #include <fstream>
     9 #include <cstdio>
    10 #include <string>
    11 #include <vector>
    12 #include <queue>
    13 #include <cmath>
    14 #include <stack>
    15 #include <map>
    16 #include <set>
    17 
    18 using namespace std;
    19 typedef pair<int,int> II;
    20 typedef vector<int> IV;
    21 typedef vector<II> IIV;
    22 typedef vector<bool> BV;
    23 typedef long long i64;
    24 typedef unsigned long long u64;
    25 typedef unsigned int u32;
    26 #define For(t,v,c) for(t::const_iterator v=c.begin(); v!=c.end(); ++v)
    27 #define IsComp(n) (_c[n>>6]&(1<<((n>>1)&31)))
    28 #define SetComp(n) _c[n>>6]|=(1<<((n>>1)&31))
    29 const int MAXP = 46341; //sqrt(2^31)
    30 const int SQRP = 216; //sqrt(MAX)
    31 int _c[(MAXP>>6)+1];
    32 IV primes;
    33 void prime_sieve() {
    34     for ( int i = 3; i <= SQRP; i += 2 )
    35         if ( !IsComp(i) ) for ( int j = i*i; j <= MAXP; j+=i+i ) SetComp(j);
    36     primes.push_back ( 2 );
    37     for ( int i = 3; i <= MAXP; i += 2 ) if ( !IsComp(i) ) primes.push_back ( i );
    38 }
    39 int euler_phi ( int n ) {
    40     int ans = n;
    41     int sn = sqrt ( n );
    42     For ( IV, it, primes ) {
    43         int prime = *it;
    44         if ( prime > sn ) break; if ( n % prime ) continue;
    45         for ( ; n%prime == 0; n/= prime );
    46         ans /= prime;
    47         ans *= (prime-1);
    48         sn = sqrt(n);
    49     }
    50     if ( n > 1 ) ans /= n, ans *= (n-1);
    51     return ans;
    52 }
    53 i64 sum[4000050],phi[4000050],f[4000050];
    54 int main()
    55 {
    56     prime_sieve ( );
    57     i64 n,i,j,len,d;
    58     for(i=2;i<=4000000;i++)
    59     phi[i]=euler_phi(i);
    60     memset(f,0,sizeof(f));
    61     for(i=1;i<=4000000;i++)
    62     {
    63         for(j=i;j<=4000000;j+=i)
    64         f[j]+=i*phi[j/i];
    65     }
    66     sum[2]=1;
    67     for(i=3;i<=4000000;i++)
    68     sum[i]=f[i]+sum[i-1];
    69     while(scanf("%lld",&n)!=EOF&&n)
    70     {
    71         printf("%lld
    ",sum[n]);
    72     }
    73     return 0;
    74 }
  • 相关阅读:
    jquery toggle(listenerOdd, listenerEven)
    struts quick start
    hdu 1518 Square (dfs)
    hdu 2544 最短路 (最短路径)
    hdu 1754 I Hate It (线段树)
    hdu 1856 More is better (并查集)
    hdu 1358 Period (KMP)
    hdu 2616 Kill the monster (DFS)
    hdu 2579 Dating with girls(2) (bfs)
    zoj 2110 Tempter of the Bone (dfs)
  • 原文地址:https://www.cnblogs.com/Acgsws/p/3193207.html
Copyright © 2011-2022 走看看