题意:

求最小的$x\in[1,N]$,使得$x$为$g(x)$最大的数 中最小的一个。

分析:

1.$x$不会有超过$10$个不同质因子。理由:$2 \times 3\times 5...\times 31>2\times 1e9$
$2\times 3\times 5...\times 29<2\times 1e9$。
$2$至$29$质数刚好$10$个。

2.质因子指数不会大于$30$。理由:当取最小的质因子$2$时,$231>2\times 1e9$,$230<2\times 1e9$。

3.若$x=p_1^{c_1}p_2^{c_2}...p_n^{c_n}$,则x的因子个数为$(c_1+1)(c_2+1)...(c_n+1)$。即:$g(x)=(c_1+1)(c_2+1)...(c_n+1)$。

4.质因子连续、指数不升。理由:反证法。若$x=p_1^{c_1}p_2^{c_2}...p_n^{c_n}$,且存在$p_{n-1}<p'<p_n$,则

$x_0=p_1^{c_1}p_2^{c_2}...p_{n-1}^{c_{n-1}}p'^c_n<x$
,$g(x_0)=g(x)$,不符合题意。

若存在$c_n>c_{n-1}$,则将$c_n$,$c_{n-1}$位置交换,也不符合题意

综上所述,可以用上述几个约束条件进行搜索剪枝。

代码就是简单的$DFS$。

#include<iostream>
#include<vector>
typedef long long ll;
using namespace std;
const ll pa[]={,,,,,,,,,,};
ll n,ans=,g=; void dfs(ll p,ll t,ll now,ll ng)
{
if(now>n) return;
if(p>) return;
ll temp=ng;
for(ll i=;i<=t;i++){
now*=pa[p];
ng=temp*(i+);
if(now>n) return;
if(ng>g) ans=now,g=ng;
if(ng==g) ans=min(now,ans);
dfs(p+,i,now,ng);
}
} signed main()
{
cin>>n;
dfs(,,,);
cout<<ans;
return ;
}

最新文章

  1. CURL 模拟http提交
  2. 简单的聊天室代码php+swoole
  3. 数字格式化函数:Highcharts.numberFormat()
  4. java视频转码博客
  5. oracle的基本概念
  6. 与MySQL的零距离接触 - 慕课网
  7. MarkDowdPad 破解
  8. Excel转换成PDF
  9. Java[1] Java学习书籍汇总(转)
  10. Django创建博客
  11. 微信H5支付网络环境未能通过安全验证,请稍后再试(获取终端ip )
  12. Python内置函数(63)——property
  13. DirectX11 初探XMVECOTR&amp;XMMATRIX
  14. Loading class `com.mysql.jdbc.Driver&#39;. The new driver class is `com.mysql.cj.jdb 问题
  15. SpringCloud项目启动报错:NoClassDefFoundError: org/springframework/core/env/EnvironmentCapable
  16. C99标准的柔性数组 (Flexible Array)
  17. hdu-2328(暴力枚举+kmp)
  18. SSH防暴力破解脚本
  19. python基础学习11天,作业题
  20. linux之 sed命令

热门文章

  1. Database Comparer VCL 6.4.908.0 D5-XE10.1
  2. EnterpriseLibrary 6.0 AOP 使用问题
  3. 15 款 jQuery 社交分享插件
  4. 浅议Delphi中的Windows API调用(举的两个例子分别是String和API,都不错,挺具有代表性)
  5. Linux实现彩色提示符
  6. sql 日志恢复
  7. 我所理解的Vue——学习心得体会1(Vue对象)
  8. 03- 基本的SQL语句介绍
  9. JS数据结构第四篇 --- 栈
  10. Spark学习之路(七)—— 基于ZooKeeper搭建Spark高可用集群