LINK:求正整数

比较难的高精度。

容易想到贪心不过这个贪心的策略大多都能找到反例。

考虑dp.

f[i][j]表示前i个质数此时n的值为j的最小的答案。

利用高精度dp不太现实。就算上FFT也会T掉。

乘积的形式 我们可以将其变成对数的形式就很容易转移了。

转移时记录决策 然后 最后做一遍高精度即可。

值得一提的是 压位高精度时比如压15为那么最后输出的形式为printf("%015d",ans);

因为%1e15之后有效数位还有15个而并非14个.

const int MAXN=510,N=17;
int n,m,top;
db c[N];
db f[N][MAXN];
int g[N][MAXN],v[MAXN];
int a[N]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
int w[MAXN];
int ans[MAXN*10],len;
inline void get_path(int i,int j)
{
int las=g[i][j];
int ww=v[las]/v[j];
w[i]=ww-1;
if(i)get_path(i-1,las);
}
int main()
{
//freopen("1.in","r",stdin);
//freopen("2.out","w",stdout);
get(n);m=16;if(n==1){puts("1");return 0;}
rep(1,m,i)c[i]=log(a[i]*1.0);
rep(1,n,i)if(n%i==0)v[++top]=i;
rep(0,m,i)rep(1,top,j)f[i][j]=INF;
f[0][top]=0;
rep(0,m-1,i)
{
//if(i==m-1)cout<<"ww"<<endl;
rep(1,top,j)
{
//cout<<f[i][j]<<endl;
//if(i==m-1&&j==top)cout<<"ww"<<' '<<f[m-1][j]<<endl;
if(fabs(f[i][j]-INF)<=EPS)continue;
for(int k=1;k<=j;++k)
{
if(v[j]%v[k]==0)
{
int w=v[j]/v[k];
//if(i==m-1&&j==top&&k==1)
//cout<<' '<<f[i+1][k]<<' '<<f[i+1][k]-f[i][j]-c[i+1]*(w-1)<<endl;
if(f[i+1][k]-f[i][j]-c[i+1]*(w-1)>EPS)
{
f[i+1][k]=f[i][j]+c[i+1]*(w-1);
//if(i+1==m)cout<<f[i+1][k]<<endl;
g[i+1][k]=j;
}
}
}
}
}
//cout<<f[2][1]<<' '<<f[3][1]<<f[1][1]<<endl;
get_path(m,1);
//rep(1,m,i)put(w[i]);
//w[1]=100;w[3]=100;
ans[len=0]=1;
rep(1,m,i)
{
while(w[i])
{
rep(0,len,j)ans[j]=ans[j]*a[i];
rep(0,len,j)ans[j+1]+=ans[j]/mod,ans[j]%=mod;
if(ans[len+1])++len;--w[i];
}
}
printf("%d",ans[len]);
fep(len-1,0,i)printf("%06d",ans[i]);
return 0;
}

luogu P1128 [HNOI2001]求正整数 dp 高精度的更多相关文章

  1. BZOJ 1225: [HNOI2001] 求正整数( dfs + 高精度 )

    15 < log250000 < 16, 所以不会选超过16个质数, 然后暴力去跑dfs, 高精度计算最后答案.. ------------------------------------ ...

  2. P1128 [HNOI2001]求正整数

    传送门 rqy是我们的红太阳没有它我们就会死 可以考虑dp,设\(dp[i][j]\)表示只包含前\(j\)个质数的数中,因子个数为\(i\)的数的最小值是多少,那么有转移方程 \[f[i][j]=m ...

  3. 高精度+搜索+质数 BZOJ1225 [HNOI2001] 求正整数

    // 高精度+搜索+质数 BZOJ1225 [HNOI2001] 求正整数 // 思路: // http://blog.csdn.net/huzecong/article/details/847868 ...

  4. bzoj1225 [HNOI2001] 求正整数

    1225: [HNOI2001] 求正整数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 762  Solved: 313[Submit][Statu ...

  5. [HNOI2001] 求正整数 - 背包dp,数论

    对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m. Solution (乍一看很简单却搞了好久?我真是太菜了) 根据因子个数计算公式 若 \(m = \prod p_i^{q_i}\) ...

  6. BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数

    题意:给定n求,有n个因子的最小正整数. 题解:水题,zcr都会,我就不说什么了. 因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子, (1+p1 ...

  7. 【BZOJ】1225: [HNOI2001] 求正整数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1225 题意:给一个数n,求一个最小的有n个约数的正整数.(n<=50000) #include ...

  8. [HNOI2001]求正整数

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

  9. 1166 矩阵取数游戏[区间dp+高精度]

    1166 矩阵取数游戏 2007年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description [ ...

随机推荐

  1. 31道Java核心面试题,一次性打包送给你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  2. 有点愧疚,今天把unity官方骗了...

    今天下午2点,突然给我发了一封邮件说我违规: Unity Technologies Hello, Your Account: *@*.net has been suspended and you ca ...

  3. Yii2源码分析(一):入口

    写在前面,写这些随笔是记录下自己看Yii2源码的过程,可能会有些流水账,大部分解析放在注释里说明,由于个人水平有限,有不正确的地方还望斧正. web入口文件Index.php // 定义全局的常量,Y ...

  4. Redis批量查询模板

    场景 在开发的时候经常会遇到批量取缓存的问题,例如查询商品信息 传入一个商品Id列表,查询Redis数据存在则放入返回列表 不存在的数据查找数据库,并放入Redis 上面两步数据整合返回 伪代码为 l ...

  5. tf.nn.conv2d函数和tf.nn.max_pool函数介绍

    tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 介绍参数: input:指卷积需要输入的 ...

  6. python3利用cryptography 进行加密和解密

    我们的日常工作中,一定会遇到需要加密的数据,比如:密码.私密信息... ... 我们不仅要对他们进行加密,更需要对他们进行解密,因为毕竟我们的用户应该不会看得懂加密过后的字符串吧!!! 在python ...

  7. Go Pentester - HTTP Servers(3)

    Building Middleware with Negroni Reasons use middleware, including logging requests, authenticating ...

  8. OSCP Learning Notes - Exploit(8)

    Tools: 3. hydra Hydra v8.9.1 (c) 2019 by van Hauser/THC - Please do not use in military or secret se ...

  9. OSCP Learning Notes - File Transfers(2)

    Metasploit Target Server: Kioptrix Level 1 (1) Start the Metasploit on Kali Linux. (2) Set the modul ...

  10. Ethical Hacking - NETWORK PENETRATION TESTING(6)

    Creating a fake access point (honeypot) Fake access points can be handy in many scenarios, one examp ...