LuoguP1820 寻找AP数

来源:互联网 发布:无锡华云数据 编辑:程序博客网 时间:2024/05/17 11:57

p1,p2,p3为从小到大的素数集合,k1,k2,k3为它们的指数,AP数有:i,ki>ki+1所以根据这个性质枚举,还有就是找在指数一样多(计算公式为(ki+1))的情况下,要求最小的!!!

long long z[20]={2,3,5,7,11,13,17,19,23,29,31,37},n,ans,p;void getans(long long x,long long y,long long k,long long aa){    long long s=x;    if(y>10)        return;    if(aa>p&&x<=n)    {        ans=x;        p=aa;    }    if(aa==p&&x<ans)        ans=x;    fr(i,1,k)    {        s=s*z[y];        if(s>n)            break;        getans(s,y+1,i,aa*(i+1));    }}int main(){    while(scanf("%lld",&n)!=EOF)    {        ans=0;        p=0;        getans(1,0,1000000,1);        printf("%lld\n",ans);    }    return 0;}
原创粉丝点击