【bzoj1053】[HAOI2007]反素数ant(数论)
来源:互联网 发布:react setstate 数组 编辑:程序博客网 时间:2024/04/26 22:16
题目:我是超链接
题解:
我们发现从1-n的枚举大法十分费时间啊。而分解质因数可以帮我们解决这个问题,把一个数字分成2^x,3^y,5^z.....这个数字的约数个数根据乘法原理就是(x+1)(y+1)(z+1)
我们最多需要10个质数,因为ta们乘起来已经要超longlong了
要解决这个问题我们还需要知道的:计入答案的质数一定是连续的,比如2*3*5,如果你计入了2*3*7,ta和2*3*5的约数个数是一样的,但是2*3*7数字大,可以被更小的数字替换
但是又因为无法比较(x+1)(y+1)与(x+3)大小,没有办法求出每一项确定的值,那就直接比个max好了
代码:
#include <cstdio>#define LL long longusing namespace std;int zz[15]={0,2,3,5,7,11,13,17,19,23,29,31};int n;LL ans,mq=0;void dfs(LL x,LL y,int z){if (x>mq) mq=x,ans=y;if (x==mq && ans>y) ans=y; if (z>11) return;for (int i=1;i<=50;i++) if (y*zz[z]>n) break; else { dfs(x*(i+1),y*zz[z],z+1); y*=zz[z]; } }int main(){scanf("%d",&n);ans=n+1;dfs(1,1,1);printf("%lld",ans);}
阅读全文
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 DFS
- [dfs] BZOJ1053: [HAOI2007]反素数ant
- 【结论+暴搜】BZOJ1053 [HAOI2007]反素数ant
- BZOJ1053(HAOI2007)反素数ant--暴搜
- 【BZOJ1053】【HAOI2007】反素数ant 打表。/搜索
- Linux设备分类
- 20170919memo
- 【BZOJ1044】【HAOI2008】木棍分割
- 数模国赛记录
- 郁闷的C小加(三)
- 【bzoj1053】[HAOI2007]反素数ant(数论)
- 每日英语阅读(五十九)
- 什么是底层驱动程序
- System V信号量-semget()、semop()和semctl()
- 微信开发验证身份-微信开发教程5
- 前端进阶,从Foundation UI框架开始
- 微信开发源代码详细分析-微信开发教程6
- 算法学习之分治--归并排序
- Hive写SQL语句