BZOJ1053(HAOI2007)反素数ant--暴搜
来源:互联网 发布:什么人容易中大奖 知乎 编辑:程序博客网 时间:2024/04/19 19:01
【链接】
bzoj1053
【解题报告】
一个数可以拆分为若干个质因子相乘的形式
易知一个数的因数个数为
因为小素数比大素数优。(因为因数个数只跟拆分的素数个数有关)。
所以只需要用前11个素数dfs就可以解决此题了。
#include<cstdio>#include<cmath>#define LL long longusing namespace std;const int a[12]={2,3,5,7,11,13,17,19,23,29,31};int n,ans,num;inline char nc(){ static char buf[100000],*l,*r; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin); if (l==r) return EOF; return *l++;}inline int Read(){ int res=0; char ch=nc(); while (ch<'0'||ch>'9') ch=nc(); while (ch>='0'&&ch<='9') res=res*10+ch-48,ch=nc(); return res;}void Dfs(int x,int now,int sum,int las){ if (x>11) { if (sum>num) ans=now,num=sum; if (now<ans&&sum==num) ans=now; return; } for (int i=0,p=1; i<=las; i++,p*=a[x]) { Dfs(x+1,now*p,sum*(i+1),i); if ((LL)now*p*a[x]>n) break; }}int main(){ freopen("1053.in","r",stdin); freopen("1053.out","w",stdout); n=Read(); ans=num=0; Dfs(0,1,1,log2(n)); printf("%d",ans); return 0;}
阅读全文
1 0
- 【结论+暴搜】BZOJ1053 [HAOI2007]反素数ant
- BZOJ1053(HAOI2007)反素数ant--暴搜
- bzoj1053 [HAOI2007]反素数ant
- bzoj1053: [HAOI2007]反素数ant
- BZOJ1053: [HAOI2007]反素数ant
- [BZOJ1053][HAOI2007]反素数ant
- BZOJ1053: [HAOI2007]反素数ant
- 【bzoj1053】【HAOI2007】反素数ant
- bzoj1053[HAOI2007]反素数ant
- 【bzoj1053】 [HAOI2007]反素数ant
- bzoj1053: [HAOI2007]反素数ant
- bzoj1053 [HAOI2007] 反素数ant
- Bzoj1053 [HAOI2007]反素数ant
- bzoj1053: [HAOI2007]反素数ant
- 【bzoj1053】[HAOI2007]反素数ant DFS
- [dfs] BZOJ1053: [HAOI2007]反素数ant
- 【bzoj1053】[HAOI2007]反素数ant(数论)
- 【BZOJ1053】【HAOI2007】反素数ant 打表。/搜索
- 14.2 数字加密简介
- STM32点灯
- 第三章 求100以内的所有完数
- 第五章 面向对象(中)
- React-Native开发总结-react层面上的问题
- BZOJ1053(HAOI2007)反素数ant--暴搜
- 求1!+2!。。。。。。+10!
- Apache/POI导出EXCEL经典实现
- Fiori 代码规范2---代码结构详解1
- Unity中Static关键字作用漫谈
- Longest Palindromic Substring--LeetCode
- 输出全部的希腊字母
- java通过JDBC链接SQLServer2012
- 14.3 HTTPS 细节