hdu - 4228 - Flooring Tiles - dfs
来源:互联网 发布:json好处 编辑:程序博客网 时间:2024/06/05 07:22
对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.
如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.
现在给一个N,求出不超过N的最大的反素数.
比如:输入1000 输出 840
思维过程:
求[1..N]中约数在大的反素数-->求约数最多的数
如果求约数的个数 756=2^2*3^3*7^1
(2+1)*(3+1)*(1+1)=24
基于上述结论,给出算法:按照质因数大小递增顺序搜索每一个质因子,枚举每一个质因子
为了剪枝:
性质一:一个反素数的质因子必然是从2开始连续的质数.
因为最多只需要10个素数构造:2,3,5,7,11,13,17,19,23,29
如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.
现在给一个N,求出不超过N的最大的反素数.
比如:输入1000 输出 840
思维过程:
求[1..N]中约数在大的反素数-->求约数最多的数
如果求约数的个数 756=2^2*3^3*7^1
(2+1)*(3+1)*(1+1)=24
基于上述结论,给出算法:按照质因数大小递增顺序搜索每一个质因子,枚举每一个质因子
为了剪枝:
性质一:一个反素数的质因子必然是从2开始连续的质数.
因为最多只需要10个素数构造:2,3,5,7,11,13,17,19,23,29
性质二:p=2^t1*3^t2*5^t3*7^t4.....必然t1>=t2>=t3>=....
题意:http://acm.hdu.edu.cn/showproblem.php?pid=4228
给你m个小方块,我们知道m块小方块能组成n个长方形。
现给定n,求最小的m。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define inf (1LL << 60)typedef __int64 lld;lld p[1000];int n;lld prime[25]= {2,3,5,7,11,13,17,19,23,29,31,37,41,53,59,61};void Make(int facnum, int limit, lld x, int k){// 1 60 1 0 if(facnum > 150 || x > inf) return ; if((p[facnum] != -1 && p[facnum] > x) || p[facnum] == -1) p[facnum] = x; if(k > 16) return ; lld tmp = x; for(int i = 1; i <= limit; i ++){ tmp *= prime[k]; if(tmp > inf) break; Make(facnum * (i + 1), i, tmp, k + 1); }}int main(){ memset(p,-1,sizeof(p)); p[1]=1; Make(1,60,1,0); while(scanf("%d",&n)!=EOF && n){//p[i] 为有约数个数为i的最小数 lld ans=((lld)1<<60); if(p[2 * n] != -1 && p[2 * n - 1] != -1){ if(p[2 * n - 1] > p[2 * n] && p[2 * n] != -1) ans = p[2 * n]; else ans = p[2 * n - 1]; }else if(p[2 * n] == -1){ ans = p[2 * n - 1]; }else ans = p[2 * n]; printf("%I64d\n",ans); } return 0;}
- hdu - 4228 - Flooring Tiles - dfs
- hdu 4228 Flooring Tiles DFS
- HDU 4228 Flooring Tiles 反素数
- 【hdu】4228 Flooring Tiles【反素数】
- HDU 4228 Flooring Tiles (反素数应用)
- HDOJ 4228 Flooring Tiles (反素数)
- Flooring Tiles 反素数
- HDU4228 Flooring Tiles 反素数应用
- codechef Flooring
- tiles
- tiles
- tiles
- Tiles
- CODEFORCES 515D Drazil and Tiles <路径dfs + 跳格>
- HDU DFS
- 【DFS】HDU
- HDU DFS
- Wood Flooring Advantage
- [转]Windows下利用MinGW编译FFmpeg
- VC改变BMP图像大小
- 360圆桌面:“傻”与“重生”
- 浅谈php web安全
- 分段函数求值
- hdu - 4228 - Flooring Tiles - dfs
- 正确使用stl map的erase方法
- 减少与“大牛”的差距
- XML初解
- enum和typedef enum相同吗
- VMware网络设置详解
- 模拟用户单击按钮的消息
- 【Java】对于自定义对象List进行排序
- 一道面试题 的正解 保证汉字不被截半个