zoukankan      html  css  js  c++  java
  • 欧拉函数专题

    poj 2478 http://poj.org/problem?id=2478

    思路:欧拉函数基础题,可以看出n+1与n的区别只是多加了一个phi(n)的大小而已,记得会超long long 就好了

    素数筛法:学习博客

    /**************************************************************
        Problem:poj 2478
        User: youmi
        Language: C++
        Result: Accepted
        Time:94MS
        Memory:10884K
    ****************************************************************/
    //#pragma comment(linker, "/STACK:1024000000,1024000000")
    //#include<bits/stdc++.h>
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <map>
    #include <stack>
    #include <set>
    #include <sstream>
    #include <cmath>
    #include <queue>
    #include <deque>
    #include <string>
    #include <vector>
    #define zeros(a) memset(a,0,sizeof(a))
    #define ones(a) memset(a,-1,sizeof(a))
    #define sc(a) scanf("%d",&a)
    #define sc2(a,b) scanf("%d%d",&a,&b)
    #define sc3(a,b,c) scanf("%d%d%d",&a,&b,&c)
    #define scs(a) scanf("%s",a)
    #define sclld(a) scanf("%I64d",&a)
    #define pt(a) printf("%d
    ",a)
    #define ptlld(a) printf("%I64d
    ",a)
    #define rep0(i,n) for(int i=0;i<n;i++)
    #define rep1(i,n) for(int i=1;i<=n;i++)
    #define rep_1(i,n) for(int i=n;i>=1;i--)
    #define rep_0(i,n) for(int i=n-1;i>=0;i--)
    #define Max(a,b) ((a)>(b)?(a):(b))
    #define Min(a,b) ((a)<(b)?(a):(b))
    #define lson (step<<1)
    #define rson (lson+1)
    #define esp 1e-6
    #define oo 0x3fffffff
    #define TEST cout<<"*************************"<<endl
    
    using namespace std;
    typedef long long ll;
    
    int n;
    
    const int maxn=1000000+10;
    bool isprime[maxn];
    int prime[maxn];
    ll phi[maxn];
    int tot=0;
    void get_prime()
    {
        tot=0;
        memset(isprime,true,sizeof(isprime));
        isprime[0]=isprime[1]=false;
        prime[tot++]=2;
        for(int i=3;i<maxn;i++)
        {
            if(isprime[i])
            {
                prime[tot++]=i;
                for(ll j=i;1ll*i*j<maxn;j+=2)
                    isprime[i*j]=false;
            }
        }
    }
    void get_phi()
    {
        phi[1]=1;
        for(int i=1;i<maxn;i++)
        {
            for(int j=0;j<tot&&1ll*i*prime[j]<maxn;j++)
            {
                if(i%prime[j]==0)
                {
                    phi[i*prime[j]]=phi[i]*prime[j];
                    break;
                }
                else
                    phi[i*prime[j]]=phi[i]*(prime[j]-1);
            }
        }
    }
    int main()
    {
        #ifndef ONLINE_JUDGE
        freopen("in.txt","r",stdin);
        #endif
        get_prime();
        get_phi();
        for(int i=3;i<maxn;i++)
            phi[i]+=phi[i-1];
        while(~sc(n)&&n)
        {
            printf("%lld
    ",phi[n]);
        }
    }
    View Code
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    #include <stack>
    using namespace std;
    const int maxn=1000000+20;
    typedef long long ll;
    int n;
    ll phi[maxn];
    void init()//nlog(n)的复杂度
    {
        for(int i=1;i<=maxn-10;i++)
            phi[i]=i;
        for(int i=2;i<=maxn-10;i+=2)
            phi[i]/=2;
        for(int i=3;i<=maxn-10;i+=2)
        {
            if(phi[i]==i)
            {
                for(int j=i;j<=maxn-10;j+=i)
                    phi[j]=(phi[j]/i)*(i-1);
            }
        }
        for(int i=3;i<=maxn-10;++i)
            phi[i]+=phi[i-1];
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        init();
        while(~scanf("%d",&n)&&n)
        {
            printf("%lld
    ",phi[n]);
        }
        return 0;
    }
    不为失败找借口,只为成功找方法
  • 相关阅读:
    【原创】tyvj1038 忠诚 & 计蒜客 管家的忠诚 & 线段树(单点更新,区间查询)
    [转载]线段树模板
    并查集相当6的一篇文章~~~
    觉得一篇讲SPFA还不错的文章
    【原创】POJ 3259 Wormholes(Bellman-Ford) && 简介Bellman-Ford算法
    【原创】谈谈数据结构课后作业......尴尬不已...《图》 后面的迷宫问题
    MyBatis源码分析(七):动态代理(Mybatis核心机制)
    1026: [SCOI2009]windy数
    Spring Boot 官方文档学习(一)入门及使用
    Spring Hibernate JPA 联表查询 复杂查询
  • 原文地址:https://www.cnblogs.com/youmi/p/4934089.html
Copyright © 2011-2022 走看看