【数学】【CF27E】 Number With The Given Amount Of Divisors
Description
给定一个正整数,输出最小的整数,满足这个整数有n个因子
Input
一行一个整数
Output
一行一个整数,代表答案。
Hint
。保证答案不超过
Solution
经典题。
引理:
对于一个唯一分解式形如的数字,则其因数个数为。
证明:
考虑乘法原理,第项的指数有共种方式,根据唯一分解定理的逆定理,每一项指数不同所得到的数是不同的。于是根据乘法原理,其因数个数为。
证毕。
定理:
考虑一个因数个数为的最小整数,则它的唯一分解式中,不妨设,则一定满足:,且,是大于的第一个质数,同时,。
证明:
1、若在质数表上不是连续的,不妨设,则将替换为,会变小,因为不变,根据引理,因数个数不变。于是替换为答案更优,这与是最小的有个因子的数矛盾。
2、若不是单调不升,不妨设,则将两指数交换,会变小。同上可证因数个数不变。于是交换后答案更优,这与是最小的有个因子的数矛盾。
证毕。
于是发现答案的唯一分界式,一定会出现且指数最大。考虑已经大于,所以指数最多为。又发现前15个质数连乘的答案已经大于,所以质数最多是15个。于是爆搜一下,分别进行一下可行性剪枝和最优性剪枝,即可通过本题。
Code
#include<cstdio>
#define rg register
#define ci const int
#define cl const long long
typedef 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
对于一个唯一分解式形如的数字,则其因数个数为。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具