bzoj1053 [HAOI2007] 反素数ant

来源:互联网 发布:网络数据拦截分析工具 编辑:程序博客网 时间:2024/04/16 16:52

传送门
Description

  对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i)0 < i < x,则称x为反质数。例如,整数1,2,4,6等都是反质数。现在给定一个数N,你能求出不超过N的最大的反质数么?
Input
  一个数N(1<=N<=2,000,000,000)。
Output
  不超过N的最大的反质数。
Sample Input
1000
Sample Output
840

题解

乍一看这道题很像一道数轮题,于是苦心钻研欧拉函数无果= =
然而这道题跟欧拉函数半毛钱关系都没有,事实上是一道搜索
可以枚举所有的小质数,由于唯一分解定理,若一个数x可以被分解成
               这里写图片描述

这里写图片描述
所以枚举完所有小质数的直属以后就可以直接求其因子数量了
又由于题目要求的是g(x)>g(i) 0 < i < x,所以当因子数量相同时,更小的数才是答案
所以枚举指数的时候较大的质数的指数一定小于等于之前的质数的指数。
搜索即可

#include<cstdio>int P[13]={0,2,3,5,7,11,13,17,19,23,29,31,37};int n,maxn;long long ans;void dfs(long long num,int tot,int d,int last){    if(tot>maxn||tot==maxn&&num<ans) maxn=tot,ans=num;    if(d==13) return;    long long tmp=1;    for(int i=1;i<=last;i++)    {        tmp*=P[d];if(tmp*num>n) break;        dfs(num*tmp,tot*(i+1),d+1,i);    }}int main(){    scanf("%d",&n);    dfs(1,1,1,27);    printf("%lld",ans);    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 9万月3分利息怎么办 免维护电瓶亏电怎么办 自煮小火锅吃完怎么办 孕囊形状是扁的怎么办 老公去世房产转到老婆手续怎么办 宝宝一周岁隔奶不喝牛奶怎么办 高中生偷买手机家长怎么办 丈夫迷上打麻将妻子该怎么办 三星pin码忘记了怎么办 who缺陷精子率98怎么办 吃桃胶脸过敏了怎么办 安卓8.0无法充值怎么办 刚下高速限行怎么办 西安限号外地车怎么办 深圳下高速限行怎么办 物业断业主的电怎么办 物业要求拆除外晾衣架怎么办 安置费一次给了房子没建好怎么办 虎牙充值不到账怎么办 平安保险交20年怎么办 u盘里东西乱码了怎么办 手机指环支架松了怎么办 运动完放屁很臭怎么办 腾讯柒个我要会员怎么办 海风吹的变黑了怎么办 冻豆角炖不烂糊怎么办 腿被热水烫了怎么办 肉和冰箱冻住了怎么办 解冻的肉臭了怎么办 临时用电电缆线破皮怎么办 阳台按自来水墙面脱落怎么办 墙被暖气熏黑了怎么办 下水管比地砖低怎么办 马桶下水管短了怎么办 下水管比马桶低怎么办? 寻常疣液氮冷冻后该怎么办 寻常疣冷冻后起水泡胀痛怎么办 冷冻后大水泡痒怎么办 19岁的宫颈糜烂怎么办 发面酸了没有碱怎么办 面发时间长酸了怎么办