zoukankan      html  css  js  c++  java
  • 【SDOI 2008】 仪仗队

    【题目链接】

                 https://www.lydsy.com/JudgeOnline/problem.php?id=2190

    【算法】

               同POJ3090

               值得注意的是此题数据规模较大,建议使用用线性筛筛出欧拉函数

    【代码】

               

    #include <algorithm>  
    #include <bitset>  
    #include <cctype>  
    #include <cerrno>  
    #include <clocale>  
    #include <cmath>  
    #include <complex>  
    #include <cstdio>  
    #include <cstdlib>  
    #include <cstring>  
    #include <ctime>  
    #include <deque>  
    #include <exception>  
    #include <fstream>  
    #include <functional>  
    #include <limits>  
    #include <list>  
    #include <map>  
    #include <iomanip>  
    #include <ios>  
    #include <iosfwd>  
    #include <iostream>  
    #include <istream>  
    #include <ostream>  
    #include <queue>  
    #include <set>  
    #include <sstream>  
    #include <stdexcept>  
    #include <streambuf>  
    #include <string>  
    #include <utility>  
    #include <vector>  
    #include <cwchar>  
    #include <cwctype>  
    #include <stack>  
    #include <limits.h>
    using namespace std;
    #define MAXN 40010
    
    int i,n,TC,T;
    int sum[MAXN];
    
    inline void init()
    {
            int i,j,tmp,cnt = 0;
            static int f[MAXN],prime[MAXN],phi[MAXN];
            for (i = 2; i < MAXN; i++)
            {
                    if (!f[i]) 
                    {
                            f[i] = prime[++cnt] = i;
                            phi[i] = i - 1;
                    }
                    for (j = 1; j <= cnt; j++)
                    {
                            tmp = i * prime[j];
                            if (tmp >= MAXN) break;
                            f[tmp] = prime[j];
                            if (prime[j] == f[i])
                            {
                                    phi[tmp] = phi[i] * prime[j];
                                    break;        
                            }    else phi[tmp] = phi[i] * (prime[j] - 1);
                    }        
            }        
            for (i = 1; i < MAXN; i++) sum[i] = sum[i-1] + phi[i];
    }
    
    int main() 
    {
        
            init();
            scanf("%d",&n);
            printf("%d
    ",2*sum[n-1]+3);
            
            return 0;
        
    }
  • 相关阅读:
    Dao层
    I/O流
    导入第三方jar包
    怎么使用log4j
    JDBC访问数据库的步骤
    抽象和封装
    JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法
    ResultSet next方法
    实体类(entity)的作用
    接口的作用
  • 原文地址:https://www.cnblogs.com/evenbao/p/9283353.html
Copyright © 2011-2022 走看看