【题意分析】

  本题中,x被称为反质数,当且仅当没有任意一个严格小于x的正整数的约数个数大于x的约数个数。求不超过N的最大反质数。

【解题思路】

  数据范围中最大的N=2*109

  首先可以证明,不超过N的反质数不会拥有9个以上的不同质因数。因为2*3*5*7*11*13*17*19*23*29=6469693230>6*109>N。

  设某数n=∏piki(pi<pi+1),则其约数个数g(n)=∏(ki+1)。(因为每个质数对约数个数的贡献是相互独立的,质数pi的可能选择方案数为(ki+1),所以可以用乘法原理乘起来)。

  显然,对于相同的顺序序列k,选择越小的pi越优,于是最优选择方案就是选择前9个质因数。

  于是暴力枚举的状态数为∏[logpN],则其至多为[log2N]*[log3N]*[log5N]*[log7N]*[log11N]*[log13N]*[log17N]*[log19N]*[log23N]=3779758080。

  显然直接暴力是无法过的,于是需要一些鲁(吉)棒(丽)或玄(松)学(爷)优化。

  所谓鲁棒优化,就是打表。。先把所有的反质数用上面这个爆搜打出来存在表里,然后二分查找即可。

  打表做法的可行性得益于反质数个数的增长极其缓慢,105的数据范围中只有30个反质数,从下图不难看出。

  玄学优化呢,有两种方法:

•方法一:考虑对ki的枚举进行优化。一种朴素的想法是同一个素因数的个数过多一定不利于让答案最优,而且越大的质因数个数应当越少,于是可以面向数据调参,限制ki枚举的上限。

•方法二:部分记忆化,f[i][j]表示j的乘积分配给第i个开始的质数最大能达到的约数个数,然后可以对超出记忆化范围的搜索做下界减枝。

  复杂度O(松)。

【参考代码】

  然而当时这题我只用了玄学优化方法一的弱化版,不知为什么就0ms过了?!

  可能有更加紧确的复杂度分析或者bz的数据有毒。。无论是哪一点请读者指出,不胜感激。

 #include<cstdio>
#define REP(I,start,end) for(int I=start;I<=end;I++)
const int prime[]={,,,,,,,,,,,,,,,};
long long maxsum, bestnum, n;
void getantiprime(long long num, long long k,long long sum,int limit)
{
int i;
long long temp;
if(sum>maxsum)
{
maxsum=sum;
bestnum=num;
}
if(sum==maxsum&&bestnum>num)
bestnum=num;
if(k>)
return;
temp=num;
REP(i,,limit)
{
if(temp*prime[k]>n)
break;
temp*=prime[k];
getantiprime(temp,k+,sum*(i+),i);
}
}
int main()
{
scanf("%lld",&n);
getantiprime(,,,);
printf("%lld\n",bestnum);
return ;
}

最新文章

  1. JSON&amp;XML总结
  2. SqlServer性能优化 通过压缩与计算列提高性能(十一)
  3. commonJS
  4. archive for required library...
  5. HDU 3078 (LCA+树链第K大)
  6. Struts中的OGNL和EL表达式笔记
  7. C语言 文件操作9--fgetc()和fputc()
  8. 【python】zip()函数
  9. CC150 - 11.5
  10. 导航栏视图设置 tabbleView 是设置总背景图
  11. C++ 读取 pcap文件.
  12. CentOS7 安装Hbase集群
  13. mysql Access denied for user root@localhost错误解决方法
  14. Jrebel最新激活破解方式以及一些必要的配置支持
  15. keras 入门整理 如何shuffle,如何使用fit_generator 整理合集
  16. 思维导图,UML图,程序流程图制作从入门到精通
  17. hystrix实战之javanica
  18. 用Proxy进行预处理
  19. androidstudio在创建new project时,窗口太大,看不到下面确定按钮的解决方法
  20. Windows 10 子系统 Ubuntu 中安装 FastAdmin

热门文章

  1. Cesium指南针
  2. centos7-关闭 rpcbind 服务
  3. IO流分类
  4. Unity NGUI插件
  5. 最常用的C++序列化方案:protobuf
  6. php编译安装增加pdo扩展
  7. Jmeter断言-所有断言讲解
  8. SSM框架整合思路
  9. mac 安装brew mac安装expect mac一键登录服务器脚本
  10. Amazon Linux AMI 2015.09 (HVM)平台搭建lamp