码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj1053: [HAOI2007]反素数ant

时间:2018-07-10 15:58:50      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:\n   ios   namespace   col   space   stream   最小   turn   搜索   

太凉了

搜索的练习做不下去了明天再做

先做点数学题压压惊

1~n区间内最约数个数最大中最小的那个数90反素数啊。

然后你可以发现它的指数是由低位到高位递减的。否则交换一下就被淘汰了。

爆搜

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int pr[10]={2,3,5,7,11,13,17,19,23,29};

int li,ymax,mmin;
LL quick_pow(LL d,int p)
{
    LL ret=1;
    while(p>0)
    {
        if(p%2==1)ret*=d;
        d*=d;p/=2;
    }
    return ret;
}
void dfs(int k,int last,LL tot,LL num)
{
    if(num>li)return ;
    if(k==-1)
    {
        if(ymax<tot||(ymax==tot&&mmin>num))
            ymax=tot, mmin=num;
        return ;
    }
    int dsf=li/num,p=0;
    while(dsf!=0)dsf/=pr[k],p++;
    LL mul=quick_pow(pr[k],p);
    for(int i=p;i>=last;i--,mul/=pr[k])
        dfs(k-1,i,tot*(1+i),num*mul);
}
int main()
{
    scanf("%d",&li);
    ymax=0;dfs(9,0,1,1);
    printf("%d\n",mmin);
    return 0;
}

 

 

bzoj1053: [HAOI2007]反素数ant

标签:\n   ios   namespace   col   space   stream   最小   turn   搜索   

原文地址:https://www.cnblogs.com/AKCqhzdy/p/9289102.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!