• bzoj3034: Heaven Cow与God Bull


    Description

    __int64 ago,there's a heaven cow called sjy...
    A god bull named wzc fell in love with her...
    As an OI & MOer,wzc gave sjy a quesiton...

    给定一个整数n,求一个整数m,满足m<=n,并且m/phi(m)的值最大。
    注:phi(m)代表m的欧拉函数,即不大于m且与m互质的数的个数。

    Input

    第一行是一个整数T,表示该测试点有T组数据。
    接下来T行,每行一个整数n,意义如上所述。

    Output

    输出一共T行,每行一个整数m。
    若对于某个n,有不止一个满足条件的m,则输出最小的m。

    贪心考虑,答案为质数的前缀积,筛出60000以内的质数,离线处理询问
    高精度需要压位优化
    #include<cstdio>
    #include<cstring>
    int ps[60000],pp=0;
    bool isnp[60004];
    int T;
    char str[30000];
    int p10[]={1,10,100,1000};
    struct integer{
        int x[7000],id,ed;
        void read(){
            scanf("%s",str);
            int l=strlen(str)-1;
            for(int i=0;i<=l;i++){
                x[i>>2]+=p10[i&3]*(str[l-i]-'0');
            }
        }
        void print(){
            int p=6999;
            while(p&&!x[p])--p;
            printf("%d",x[p]);
            for(int i=p-1;~i;--i)printf("%04d",x[i]);
            putchar(10);
        }
        void operator*=(int a){
            for(int i=0;i<7000;i++)x[i]*=a;
            for(int i=0;i<6999;i++)x[i+1]+=x[i]/10000,x[i]%=10000;
        }
    }q[100],v,v1;
    bool operator>(integer&a,integer&b){
        for(int i=6999;~i;--i){
            if(a.x[i]!=b.x[i])return a.x[i]>b.x[i];
        }
        return 0;
    }
    int main(){
        for(int i=2;i<=60000;i++){
            if(!isnp[i])ps[pp++]=i;
            for(int j=0;j<pp&&i*ps[j]<=60000;j++){
                isnp[i*ps[j]]=1;
                if(i%ps[j]==0)break;
            }
        }
        scanf("%d",&T);
        for(int i=0;i<T;i++){
            q[i].id=i;
            q[i].read();
        }
        v.x[0]=v1.x[0]=1;
        for(int i=0;i<pp;i++){
            v*=ps[i];
            for(int j=0;j<T;j++)if(!q[j].ed&&v>q[j]){
                q[j]=v1;
                q[j].ed=1;
            }
            v1=v;
        }
        for(int i=0;i<T;i++){
            for(int j=0;j<T;j++)if(q[j].id==i){
                q[j].print();
            }
        }
        return 0;
    }
  • 相关阅读:
    mailto发送邮件
    使用css实现一个持续的动画效果
    documentFragment添加节点
    删除数组的第一个元素,不要直接修改数组,结果返回新的数组
    js数组去重
    css定位position(侧边栏导航)
    mongoexport导出mongodb数据库中的数据
    textarea头部不顶行问题和textarea禁止拉伸
    HTML meta标签
    textarea
  • 原文地址:https://www.cnblogs.com/ccz181078/p/5654696.html
Copyright © 2020-2023  润新知