• 数论-欧拉函数-LightOJ


      我是知道φ(n)=n-1,n为质数  的,然后给的样例在纸上一算,嗯,好像是找往上最近的质数就行了,而且有些合数的欧拉函数值还会比比它小一点的质数的欧拉函数值要小,所以坚定了往上找最近的质数的决心——不过11往上最近的质数是13,不能包括本身。

      这样胡来居然AC了,但是之后还是老老实实地去看别人怎么做。

      把代码贴出来供后来人观赏:

      

    #include<cstdio>
    #include<cstring>
    #include<vector>
    using namespace std;
    #define maxn 1000005    //pay
    #define sc(x) scanf("%d",&x)
    #define scc(x,y) scanf("%d%d",&x,&y)
    #define sccc(x,y,z) scanf("%d%d%d",&x,&y,&z)
    #define pt printf
    #define mll unsigned long long 
    #define rep(i,a,b)  for(int i=(a);i<(b);++i)
    const int inf = 0x3f3f3f3f; 
    int T,N,M,cnt=0;
    mll ans;
    int pri[maxn],vis[maxn];
    int my_bsh(int x)
    {
        int l,r,m,ret;
        l=0,r=cnt-1;
        while(l<=r)
        {
            m=(l+r)>>1;
            if(pri[m]>x){
                ret=pri[m];
                r  =m-1;
            }else{
                l=m+1;
            }
        }
        return ret;
    }
    int main()
    {
       // freopen("in.txt","r",stdin);
        sc(T);
        int kase,x,y ; 
        mll i,j;
        for(i=2;i<(mll)maxn;++i){
            if(!vis[i]) {
                pri[cnt++]=(int)i;
                for(j=i*i;j<(int)maxn;j+=i)  vis[j]=1;
            }
        }
        for(kase = 1;kase<=T;++kase)
        {
            ans= 0;
            sc(N);
            rep(i,0,N)
            {
                sc(x);
                y = my_bsh(x);
                //pt("Y=%d
    ",y);
                ans+=(mll)y;
            }
            pt("Case %d: %llu Xukha
    ",kase,ans);
        }
        return 0;
    }
    数论 欧拉函数
  • 相关阅读:
    拦截器
    Mysql修改字段类型,修改字段名
    1.Spring对JDBC整合支持
    由system.currentTimeMillis() 获得当前的时间
    spring 对jdbc的简化
    spring对JDBC的整合支持
    java 运行时异常与非运行时异常理解
    MySQL5.7 的新特点
    基于 SSL 的 Nginx 反向代理
    如何使用 lsyncd 实时同步并执行 shell 命令
  • 原文地址:https://www.cnblogs.com/lighten-up-belief/p/11391347.html
Copyright © 2020-2023  润新知