题目描述

对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m。

例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6;而且是最小的有4个因子的整数。

输入输出格式

输入格式:

n(1≤n≤50000)

输出格式:

m

输入输出样例

输入样例#1:

INT.IN
4
输出样例#1:

INT.OUT
6
题解:

这道题和[HAOI 2007]反素数ant解题思路和方法简直一毛一样...

同样我们引入这个公式:

对任一整数a>1,有a=p1a1p2a2…pnan,其中p1<p2<…<pn均为素数,而a1,a2…,an是正整数。

a的正约数个数为:(1+a1)(1+a2)…(1+an)

同理,我们也是求有n个因数的最小整数。

我们最坏的情况所有质数只取1个,由于15<log250000<16

由于数字过大,这里用指数形式保存,用于比较大小

同时注意每层循环枚举取质数的个数时候,因为不合法的情况很多,可以只枚举√n次,然后用枚举的值算出对应的另外一个值。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int len,p[],prime[],n,ans[];
double lg[],maxx=2e9;
void print(int x)
{int i,j,k;
long long s[],Mod=1e4;
memset(s,,sizeof(s));
s[]=;len=;
for (i=;i<=x;i++)
{
for (j=;j<=ans[i];j++)
{
for (k=;k<=len;k++)
{
s[k]=s[k]*prime[i];
}
for (k=;k<=len;k++)
s[k+]+=s[k]/Mod,s[k]%=Mod;
while (s[len+]) len++;
}
}
for (i=len;i>=;i--)
if (i!=len)
printf("%04d",s[i]);
else printf("%d",s[i]);
}
void dfs(double s,int x,int k)
{int i;
if (s>=maxx) return;
if (k==)
{
maxx=s;
memcpy(ans,p,sizeof(ans));
return;
}
if (x>) return;
//cout<<p[x-1]<<endl;
for (i=;(i+)*(i+)<=k;i++)
if (k%(i+)==)
{
if (i!=)
{
p[x]=i;
dfs(s+i*lg[x],x+,k/(i+));
p[x]=;
}
if ((i+)*(i+)!=k)
{
p[x]=k/(i+)-;
dfs(s+p[x]*lg[x],x+,i+);
p[x]=;
}
}
}
int main()
{int i;
cin>>n;
prime[]=;prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;prime[]=;prime[]=;prime[]=;
prime[]=;prime[]=;prime[]=;
for (i=;i<=;i++)
lg[i]=(double)log(prime[i]);
dfs(,,n);
//for (i=1;i<=16;i++)
//cout<<ans[i]<<endl;
print();
}

[HNOI2001]求正整数的更多相关文章

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

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

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

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

  3. bzoj1225 [HNOI2001] 求正整数

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

  4. luogu P1128 [HNOI2001]求正整数 dp 高精度

    LINK:求正整数 比较难的高精度. 容易想到贪心不过这个贪心的策略大多都能找到反例. 考虑dp. f[i][j]表示前i个质数此时n的值为j的最小的答案. 利用高精度dp不太现实.就算上FFT也会T ...

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

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

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

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

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

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

  8. P1128 [HNOI2001]求正整数

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

  9. 求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2

    作者:张小二 nyoj90 ,可以使用递归的方式直接计算个数,也可以通过把满足的个数求出来计数,因为在juLy博客上看到整数划分,所以重写了这个代码,就是列出所m的可能性,提交后正确.acmer的入门 ...

随机推荐

  1. 网络1711c语言函数作业总结

    作业地址:https://edu.cnblogs.com/campus/jmu/JMUC--NE17111712/homework/1335 总结 1.评分细则 评分注意事项 代码规范问题依旧要重视, ...

  2. C语言第九次作业

    一.PTA实验作业 题目1:统计大于等于平均分人数 1. 本题PTA提交列表 2.设计思路 float i为循环变量,sum=0,count=0来表示所求人数 float *p=s来储存首地址 for ...

  3. Linux下ip配置与网络重启

    ip配置 //以下ip配置重启失效 sudo ifconfig 192.168.1.1 sudo ifconfig 192.168.1.1 netmask 255.255.255.0 网络重启 //关 ...

  4. javascript原型链__proto__属性的理解

    在javascript中,按照惯例,构造函数始终都应该以一个大写字母开头,而非构造函数则应该以一个小写字母开头.一个方法使用new操作符创建,例如下面代码块中的Person1(可以吧Person1看做 ...

  5. Win10安装Ubuntu14.04.5双系统(显示器为DP接口)

    系统安装主要参考了这篇博文Win10+Ubuntu17.04双系统安装,不再重复. 重点说说DP接口的事,如果主机有VGA接口的话可以到此为止了,如果只有DP接口的话可以参考以下内容. 一.Ubunt ...

  6. api-gateway实践(13)新服务网关 - 断路保护/熔断机制

    参考链接:SpringCloud的Hystrix(五) Hystrix机制 新需求列表 1.在线测试 根据定义,生成输入界面, 点击测试, 验证参数,发起调用,返回执行结果 2.熔断保护 两个实现类: ...

  7. Mysql中autocommit的用法

    定义 Mysql文档原文:SET autocommit disables or enables the default autocommit mode for the current session. ...

  8. 这次彻底理解了Object这个属性

    1.实例化Object对象 实例化Object对象的方式有两种:使用Object构造器和使用对象的字面量.例如: var person1 = { name: '李四' }; var person2 = ...

  9. Beautifulsoup4

    kindEditor 1 官网:http://kindeditor.net/doc.php 2 文件夹说明: ├── asp asp示例 ├── asp.net asp.net示例 ├── attac ...

  10. 项目管理器 ProjectManager Beta 10 发布

    本次更新内容: 可以设置主界面是否显示表格线 去除了开发日志界面的表格线,看起来好像好看一些 修复主界面时间显示的问题 自定义问候语 修复习惯统计记录时间显示错误的问题 修复创建项目时间错误问题 增加 ...