传送门

Description

给定一个正整数\(n\),输出最小的整数,满足这个整数有n个因子

Input

一行一个整数\(n\)

Output

一行一个整数,代表答案。

Hint

\(1~\leq~n~\leq~1000\)。保证答案不超过\(10^{18}\)

Solution

经典题。

引理:

对于一个唯一分解式形如\(x=p_1^{c_1}p_2^{c_2}p_3^{c^3}\cdots p_k^{c_k}\)的数字\(x\),则其因数个数为\(\prod(c_i+1)\)。

证明:

考虑乘法原理,第\(i\)项的指数有\(0~\sim~c_i\)共\(c_i+1\)种方式,根据唯一分解定理的逆定理,每一项指数不同所得到的数是不同的。于是根据乘法原理,其因数个数为\(\prod(c_i+1)\)。

证毕。

定理:

考虑一个因数个数为\(n\)的最小整数\(x\),则它的唯一分解式\(x=p_1^{c_1}p_2^{c_2}p_3^{c^3}\cdots p_k^{c_k}\)中,不妨设\(p_1~<~p_2~<~p_3~<~\cdots~<~p_k\),则一定满足:\(p_1=2\),且\(\forall ~i~>~1\),\(p_i\)是大于\(p_{i-1}\)的第一个质数,同时\(\forall~i~\in~[1,k)\),\(c_i~\leq~c_{i+1}\)。

证明:

1、若\(p\)在质数表上不是连续的,不妨设\(p_i~<~q~<p_{i+1}\),则将\(p_{i+1}\)替换为\(q\),\(x\)会变小,因为\(c_{i+1}\)不变,根据引理,因数个数不变。于是替换为\(q\)答案更优,这与\(x\)是最小的有\(n\)个因子的数矛盾。

2、若\(c_i\)不是单调不升,不妨设\(c_i~<~c_{i+1}\),则将两指数交换,\(x\)会变小。同上可证因数个数不变。于是交换后答案更优,这与\(x\)是最小的有\(n\)个因子的数矛盾。

证毕。

于是发现答案的唯一分界式,\(2\)一定会出现且指数最大。考虑\(2^{64}\)已经大于\(10^{18}\),所以指数最多为\(64\)。又发现前15个质数连乘的答案已经大于\(10^{18}\),所以质数最多是15个。于是爆搜一下,分别进行一下可行性剪枝和最优性剪枝,即可通过本题。

Code

#include<cstdio>
#define rg register
#define ci const int
#define cl const long longtypedef long long int ll;template <typename T>
inline void qr(T &x) {rg char ch=getchar(),lst=' ';while((ch > '9') || (ch < '0')) lst=ch,ch=getchar();while((ch >= '0') && (ch <= '9')) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();if(lst == '-') x=-x;
}namespace IO {char buf[120];
}template <typename T>
inline void qw(T x,const char aft,const bool pt) {if(x < 0) {x=-x,putchar('-');}rg int top=0;do {IO::buf[++top]=x%10+'0';} while(x/=10);while(top) putchar(IO::buf[top--]);if(pt) putchar(aft);
}template <typename T>
inline T mmax(const T a,const T b) {return a > b ? a : b;}
template <typename T>
inline T mmin(const T a,const T b) {return a < b ? a : b;}
template <typename T>
inline T mabs(const T a) {return a < 0 ? -a : a;}template <typename T>
inline void mswap(T &_a,T &_b) {T _temp=_a;_a=_b;_b=_temp;
}const int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};int n;
ll ans=1000000000000000001;void dfs(ll,int,int,int);int main() {qr(n);dfs(1ll,0,64,1);qw(ans,'\n',true);return 0;
}void dfs(ll now,int cur,int p,int cnt) {if(cnt > n) return;if(now <= 0ll) return;if(now > ans) return;if(cur > 15) return;if(cnt == n) {ans=now;return;}for(int i=1;i<=p;++i) {dfs(now*=prime[cur],cur+1,i,cnt*(i+1));}
}

Summary

对于一个唯一分解式形如\(x=p_1^{c_1}p_2^{c_2}p_3^{c^3}\cdots p_k^{c_k}\)的数字\(x\),则其因数个数为\(\prod(c_i+1)\)。

转载于:https://www.cnblogs.com/yifusuyi/p/9901071.html

【数学】【CF27E】 Number With The Given Amount Of Divisors相关推荐

  1. 【CodeForces - 27E】Number With The Given Amount Of Divisors (数论,数学,反素数)

    题干: Given the number n, find the smallest positive integer which has exactly n divisors. It is guara ...

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

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

  3. 《算法竞赛中的初等数论》(一)正文 0x00整除、0x10 整除相关(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

  4. 大二上第十三周学习笔记

    周三 F - The Answer to the Ultimate Question of Life, The Universe, and Everything. (打表) 求a ^ 3 + b ^ ...

  5. 一起来读书361- 应用密码学:第十一章 数学背景

    摘要 密码学的数学背景 详情 知识点 1.信息量(amount of information):假设信息是等可能的,对消息中所有可能的值进行编码所需要的最小位数 2.语言信息率(rate of lan ...

  6. Friends number

    问题 : Friends number 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Paula and Tai are couple. There are many stories ...

  7. NEU 1008 Friends number

    传送门:点击打开链接 1008: Friends number 时间限制: 1 Sec  内存限制: 128 MB 提交: 715  解决: 214 [提交][状态][讨论版] 题目描述 Paula ...

  8. Ubuntu 14.04 配置caffe环境

    Last editted on 2016.7.23. 原文地址: http://blog.csdn.net/ubunfans/article/details/47724341 略有更改,更改的部分参考 ...

  9. 设计模式之十一个行为型模式的相关知识,简单易懂。

    一.    职责链模式-Chain of Responsibility Pattern 1)  请求的链式处理--职责链模式(一) "一对二","过",&quo ...

最新文章

  1. java中byte转string的方法有哪些?
  2. LightOJ - 1179 Josephus Problem(约瑟夫环)
  3. 计算机C语言知识点免费下载,全国计算机二级C语言知识点
  4. 固定在左右两侧不动的广告条 样式
  5. [转载]XSS 攻擊常用腳本
  6. nginx核心模块ngx_http_core_module详解
  7. 电脑显示器不亮主机正常_电脑显示屏不亮但是主机已开机怎么解决
  8. 360全景拼接 opencv_广州海珠区专业改全景,丰田塞纳改3D全景,360全景行车记录仪的功能...
  9. Android源码学习(一)系统源码初识
  10. OpenCV学习 之 IplImage*遍历每个像素点
  11. Rss Feed是什么
  12. u盘win7纯净版_如何制作纯净版WIN7启动U盘
  13. Java 编写捕鱼达人游戏 窗体程序 完整源码
  14. cf1367E 思维+贪心
  15. 华氏温度转换成摄氏温度
  16. 基于python的医学图像以辅助医疗系统
  17. 关于完美主义和拖沓症
  18. 用python爬荣耀皮肤图片(爬虫最基础题,python爬虫教程,超详细+完整代码)
  19. 10个常见的前端手写功能
  20. 腾讯云 coding使用

热门文章

  1. Oracle碎碎念~2
  2. asp.net返回值当文件下载问题
  3. 隐藏文件或文件夹属性无法修改解决方案
  4. python中正则表达式的默认匹配方式为_Python模式匹配与正则表达式
  5. 三维数组设置索引_python3三维数据结构 —— panel
  6. AOP底层原理与注解配置详解
  7. linux桌面环境是什么意思,Linux 黑话解释:什么是桌面环境?
  8. php transfer-encoding: chunked,php – 使用chunked transfer encoding和gzip
  9. 有关java的名句_关于志气的名言名句(精选50句)
  10. c:forEach varStatus属性