博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ-1225-[HNOI2001] 求正整数
阅读量:6966 次
发布时间:2019-06-27

本文共 1636 字,大约阅读时间需要 5 分钟。

Description

对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m。例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6;而且是最小的有4个因子的整数。

Input

n(1≤n≤50000)

Output

m

Sample Input

4

Sample Output

6

HINT

Source

 

题解

考虑这道题我们首先要知道

知道了这个定理后,我们不难发现可以将n分解质因数,且最多有16个质因子

这样我们可以dfs(now,nowx,s)//now表示当前取到第now个质数,nowx表示当前数,s表示对数(可以发现最后的答案是会超过long long的,所以我们存一下对数)

但是裸的dfs是会T的,需要最小值的剪枝优化

最后用高精度算一下就可以了

1 #include
2 #define N 50005 3 using namespace std; 4 const int prime[17]={
0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; 5 int n,cnt,num,len,k; 6 int a[N]; 7 int t[10000]; 8 int tmp[20],b[20]; 9 double Min;10 double lg[20];11 void mul(int x){12 for (int i=1;i<=len;i++) t[i]=t[i]*x;13 int j=1;14 while (t[j]>9||j
=Min) return;23 if (nowx==1){24 Min=s; k=now-1;25 for (int i=1;i<=now-1;i++) b[i]=tmp[i];26 return;27 }28 if (now>16) return;29 for (int i=0;(i+1)*(i+1)<=nowx;i++)30 if (!(nowx%(i+1))){31 if (i){32 tmp[now]=i;33 dfs(now+1,nowx/(i+1),s+tmp[now]*lg[now]);34 }35 if ((i+1)*(i+1)!=nowx){36 tmp[now]=nowx/(i+1)-1;37 dfs(now+1,i+1,s+tmp[now]*lg[now]);38 }39 }40 }41 int main(){42 for (int i=1;i<=16;i++) lg[i]=log(prime[i]);43 scanf("%d",&n);44 Min=1e9;45 dfs(1,n,0);46 t[1]=1; len=1;47 for (int i=1;i<=k;i++){48 int p=prime[i];49 for (int j=1;j<=b[i];j++) mul(p);50 }51 for (int i=len;i>=1;i--)52 printf("%d",t[i]);53 return 0;54 }
View Code

 

转载于:https://www.cnblogs.com/zhuchenrui/p/7756743.html

你可能感兴趣的文章
流程控制(逻辑词汇)
查看>>
初识 Spring(04)---(bean属性)
查看>>
【ASP】循环
查看>>
2014 年度小结(Node.js 与 单元测试)
查看>>
Ceph编译安装教程
查看>>
Oracle总结【SQL细节、多表查询、分组查询、分页】
查看>>
Android Service简介(系列1)
查看>>
机器人快跑!伯克利和CMU联合开发两足机器人,两条细腿,一马平川
查看>>
Android - 电池状态
查看>>
第一个 Dubbo 应用
查看>>
mysql8.0.11安装教程
查看>>
CSS-弹性布局3-伸缩属性
查看>>
阿里巴巴的机器视觉有多强!ET城市大脑发布四大AI视觉产品
查看>>
【山东CIO智库活动】山东省两化融合深度行淄博站成功举办
查看>>
HQL查询
查看>>
一文解读Tensor到底是个啥玩意儿?(附代码)
查看>>
Mysql锁机制简单了解一下
查看>>
[20180328]不要在sys建立用户对象.txt
查看>>
Reactor-Guice 0.0.7 版本发布 ,BUG 修复,自定义模板支持
查看>>
超详细!上线一个机器学习项目你需要哪些准备?
查看>>