给你一个数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 反素数的应用相关推荐

  1. HDU2521 反素数【因子数量+打表】

    反素数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. HDU2521 反素数【因子数量+打表+水题】

    反素数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...

  4. 反素数(luogu 1463)

    题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1,2,4,6 ...

  5. BZOJ(8) 1053: [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4118  Solved: 2453 [Submit][ ...

  6. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开

    6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...

  7. BZOJ 1053 [HAOI2007]反素数ant

    53: [HAOI2007]反素数ant Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0< ...

  8. Number With The Given Amount Of Divisors(反素数)

    Given the number n, find the smallest positive integer which has exactly n divisors. It is guarantee ...

  9. 【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)

    题干: 小希希望你构造一个最小的正整数,使得其有n个因子. 输入描述: 第一行一个整数T表示数据组数每组数据第一行输入一个正整数n,表示其因子数.n≤1,000,000n≤1,000,000T≤1,0 ...

最新文章

  1. 如何使用Git提高研发团队工作效率?
  2. configure: error: no acceptable C compiler found in $PATH
  3. Window Mobile SmartPhone智能手机软件开发vs2005 简体中文版 设置指南!
  4. sql 优化之关于null 和数据类型
  5. 时序分析:手势--空间轨迹模式识别
  6. linux var目录满了,Linux入门教程:/var/spool/clientmqueue 占满根目录
  7. 什么是 AJAX, what is AJAX(一)
  8. Android官方开发文档Training系列课程中文版:调用相机之控制相机
  9. 【分享】一套非常简单的企业即时通讯
  10. HDU 6581 Vacation
  11. 【API进阶之路6】一个技术盲点,差点让整个项目翻车
  12. 搭建直播源码与软件开发的注意事项
  13. STM8学习笔记---NTC热敏电阻的使用
  14. mysql float64_'numpy.float64'对象没有属性'translate'在Python中插入值到Mysql
  15. java 定时器 quartz_Java定时器和Quartz使用
  16. CF712E [Memort and Casinos]
  17. 关于mysql数据库的说法错误的是_MYSQL数据库2013-2014学年考试试卷
  18. 你要好好的---歌词
  19. tensorflow2.0:tf.keras.callbacks.EarlyStopping
  20. 计算机网络第七版 第四章课后答案

热门文章

  1. JZOJ 5600. 【NOI2018模拟3.26】Arg
  2. JZOJ 5197. 【NOIP2017提高组模拟7.3】C
  3. react 逆地理 高德地图_在react中使用原生的高德地图
  4. 匿名类java的说明_Java8 Lambdas与匿名类
  5. java remote desktop_Remote Desktop
  6. java 微信转账 ca_error_C#关于微信红包开发问题:CA证书出错,请登录微信支付商户平台下载证书...
  7. 半波对称振子方向图_移动天线的概念 | 天线方向性
  8. vue双击事件_我总结了12个Vue.js开发技巧和窍门
  9. BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)
  10. Codeforces 1205C Palindromic Paths (交互题、DP)