【结论+暴搜】BZOJ1053 [HAOI2007]反素数ant

来源:互联网 发布:yum指定路径安装mysql 编辑:程序博客网 时间:2024/04/26 04:38

题面在这里

其实就是一道结论题

观察可以发现,任意反素数拆分:
m=pk11pk22pknn
其中,若 1ijn则有pi<pjkikj
其实可以反证一发得到……

然后就爆搜了
代码:

#include<cstdio>#define LL long longconst int p[11]={10,2,3,5,7,11,13,17,19,23,29};int n,ans,yz;LL power(int a,int b){    LL w=a,ans=1;    while (b){        if (b&1) ans*=w;        w=w*w;        b>>=1;    }    return ans;}void dfs(LL now,int stp,int lst,int num){    if (stp>10){        if (num>yz||yz==num&&ans>now) ans=now,yz=num;        return;    }    for (int i=0;i<=lst;i++)     if (now*power(p[stp],i)<=n)      dfs(now*power(p[stp],i),stp+1,i,num*(i+1));else break;}int main(){    scanf("%d",&n);    dfs(1,1,32,1);    printf("%d",ans);    return 0;}
原创粉丝点击