HDU 4228 Flooring Tiles 反素数的应用
给你一个数N,找出一个最小的可以拆分成N种乘积表达形式的数x
比如N=2,6可以拆成2x3或者1x6两种,但不是最小的,最小的是4可以拆成1x4,2x2两种
首先可以肯定的是x必然有N*2或者是N*2-1(完全平方的情况)个约数
利用求反素数的过程求出约数为N*2和N*2-1个的最小的数
#include <cstdio> #include <sstream> #include <fstream> #include <cstring> #include <iostream> #include <algorithm> #include <map> #include <cctype> #include <ctime> #include <set> #include <climits> #include <vector> #include <queue> #include <stack> #include <cstdlib> #include <cmath> #include <string> #include <list>#define INPUT_FILE "in.txt" #define OUTPUT_FILE "out.txt"using namespace std;typedef unsigned long long LL; const int INF = INT_MAX / 2; const LL maxval = 1e18 + 1; const int maxn = 75 + 5; const int maxcnt = 160; LL cnt[maxn * 2]; int prime[20] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71}; int times[20];void dfs(LL curnum,LL curcnt,int nowt) {if(curnum > maxval) return;if(curcnt <= maxcnt) {cnt[curcnt] = min(cnt[curcnt],curnum);}for(int i = 1;i <= maxcnt;i++) {if(nowt == 0 || i <= times[nowt - 1]) {curnum *= prime[nowt]; if(curnum > maxval) break;curcnt = curcnt / i * (i + 1);times[nowt] = i;dfs(curnum,curcnt,nowt + 1);}else break;} }int main() {for(int i = 1;i <= maxcnt;i++) cnt[i] = maxval;dfs(1,1,0);int N;while(cin >> N,N) {LL a1 = cnt[N * 2 - 1],a2 = cnt[N * 2],sa = sqrt(a1);if(sa * sa == a1 && a1 < a2) cout << a1 << endl;else cout << a2 << endl;}return 0; }
转载于:https://www.cnblogs.com/rolight/p/3836098.html
HDU 4228 Flooring Tiles 反素数的应用相关推荐
- HDU2521 反素数【因子数量+打表】
反素数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU2521 反素数【因子数量+打表+水题】
反素数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...
- 反素数(luogu 1463)
题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...
- BZOJ(8) 1053: [HAOI2007]反素数ant
1053: [HAOI2007]反素数ant Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4118 Solved: 2453 [Submit][ ...
- Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开
6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...
- BZOJ 1053 [HAOI2007]反素数ant
53: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0< ...
- Number With The Given Amount Of Divisors(反素数)
Given the number n, find the smallest positive integer which has exactly n divisors. It is guarantee ...
- 【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)
题干: 小希希望你构造一个最小的正整数,使得其有n个因子. 输入描述: 第一行一个整数T表示数据组数每组数据第一行输入一个正整数n,表示其因子数.n≤1,000,000n≤1,000,000T≤1,0 ...
最新文章
- 如何使用Git提高研发团队工作效率?
- configure: error: no acceptable C compiler found in $PATH
- Window Mobile SmartPhone智能手机软件开发vs2005 简体中文版 设置指南!
- sql 优化之关于null 和数据类型
- 时序分析:手势--空间轨迹模式识别
- linux var目录满了,Linux入门教程:/var/spool/clientmqueue 占满根目录
- 什么是 AJAX, what is AJAX(一)
- Android官方开发文档Training系列课程中文版:调用相机之控制相机
- 【分享】一套非常简单的企业即时通讯
- HDU 6581 Vacation
- 【API进阶之路6】一个技术盲点,差点让整个项目翻车
- 搭建直播源码与软件开发的注意事项
- STM8学习笔记---NTC热敏电阻的使用
- mysql float64_'numpy.float64'对象没有属性'translate'在Python中插入值到Mysql
- java 定时器 quartz_Java定时器和Quartz使用
- CF712E [Memort and Casinos]
- 关于mysql数据库的说法错误的是_MYSQL数据库2013-2014学年考试试卷
- 你要好好的---歌词
- tensorflow2.0:tf.keras.callbacks.EarlyStopping
- 计算机网络第七版 第四章课后答案
热门文章
- JZOJ 5600. 【NOI2018模拟3.26】Arg
- JZOJ 5197. 【NOIP2017提高组模拟7.3】C
- react 逆地理 高德地图_在react中使用原生的高德地图
- 匿名类java的说明_Java8 Lambdas与匿名类
- java remote desktop_Remote Desktop
- java 微信转账 ca_error_C#关于微信红包开发问题:CA证书出错,请登录微信支付商户平台下载证书...
- 半波对称振子方向图_移动天线的概念 | 天线方向性
- vue双击事件_我总结了12个Vue.js开发技巧和窍门
- BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)
- Codeforces 1205C Palindromic Paths (交互题、DP)