http://www.lydsy.com/JudgeOnline/problem.php?id=1225

题意:给一个数n,求一个最小的有n个约数的正整数。(n<=50000)

#include <bits/stdc++.h>
using namespace std; struct inum {
static const int N=10005, MOD=10000;
int a[N], len;
inum(int x=0) { len=!x; memset(a, 0, sizeof a); while(x) a[++len]=x%MOD, x/=MOD; }
void fix() { while(len>1 && !a[len]) --len; }
void cln() { memset(a, 0, sizeof(int)*(len+1)); len=1; }
const bool operator< (const inum &x) const {
if(len<x.len) return 1;
if(len>x.len) return 0;
for(int i=len; i; --i)
if(a[i]<x.a[i]) return 1;
else if(a[i]>x.a[i]) return 0;
return 0;
}
inum operator* (const inum &x) {
static inum ret;
ret.cln();
for(int i=1; i<=len; ++i)
for(int j=1; j<=x.len; ++j) {
ret.a[i+j-1]+=a[i]*x.a[j];
if(ret.a[i+j-1]>=MOD) ret.a[i+j]+=ret.a[i+j-1]/MOD, ret.a[i+j-1]%=MOD;
}
ret.len=len+x.len;
for(int i=1; i<=ret.len; ++i)
if(ret.a[i]>=MOD) ret.a[i+1]+=ret.a[i]/MOD, ret.a[i]%=MOD;
ret.fix();
return ret;
}
void P() {
printf("%d", a[len]);
for(int i=len-1; i; --i)
printf("%.04d", a[i]);
}
};
inum ipow(inum a, int n) {
inum x=1;
while(n) { if(n&1) x=x*a; a=a*a; n>>=1; }
return x;
}
typedef long long ll;
vector<int> a[50005];
int p[17]={1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
void init(int lim) {
for(int n=2; n<=lim; ++n) if(lim%n==0) {
for(int i=1; i*i<=n; ++i) if(n%i==0) { int j=n/i; a[n].push_back(i); if(j!=i) a[n].push_back(j); }
sort(a[n].begin(), a[n].end());
}
}
inum ans;
void d(int x, int n, int last, inum now) {
if(n==1) { if(ans.len==0) ans=now; else ans=min(ans, now); }
if(ans.len!=0 && !(now<ans)) return;
inum t=p[x];
for(int i=1; i<(int)a[n].size(); ++i)
if(a[n][i]>last) break;
else d(x+1, n/a[n][i], a[n][i], now*ipow(t, a[n][i]-1));
}
int main() {
int n; scanf("%d", &n);
init(n);
ans.len=0;
d(1, n, n, inum(1));
ans.P(); puts("");
return 0;
}

  

比较水的题,由于搜索量很小,所以暴力= =(然而我的高精模板常数好大= =

【BZOJ】1225: [HNOI2001] 求正整数的更多相关文章

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

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

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

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

  3. bzoj1225 [HNOI2001] 求正整数

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

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

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

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

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

  6. [HNOI2001]求正整数

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

  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. javascript 中this详解

    this是每一个想要深入学习Javascript的人必过的一关,我为this看过很多书查过很多资料,虽然对this有了一定的了解并且也经常使用this,但是如果有人问我  this是什么呀? 我依旧不 ...

  2. SQL Server创建随机测试数据

    我们在做数据仓库开发的过程中,经常需要插入大量的测试数据来测试数据库查询性能和计算占用的存储空间等.本文主要介绍下不借用第三方的工具在数据库中直接生成大量的测试数据. 需求 每一行包含5个日期字段和一 ...

  3. WIN7系统下U盘安装Ubuntu双系统

    1. 准备工作 1. 官网下载Ubantu镜像,我下载的是Ubantu14.04.3 LTS版本: 2. 下载 Universal USB Installer (UUI)用于制作U盘启动盘: 3. 下 ...

  4. WebView相关

    Android WebView使用基础 Android WebView中的JavaScript代码使用 很不错的例子:android webview js交互 第一节 (java和js交互)

  5. visio调整画布大小和旋转画布(转)

    1.调整画布大小: 鼠标移至画布边界(注意不能是顶点附近),按下ctrl,就会出现双向箭头,拖动鼠标即能调整画布大小. 2.旋转画布: 鼠标移至画布顶点或附近,按下ctrl, 出现单箭头优弧,移动鼠标 ...

  6. loj 1379(最短路变形)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=27087 思路:题目的意思是求S->T的所有路径中花费总和小于 ...

  7. dojo.publish 和 dojo.subscribe

    原文链接:http://www.cnblogs.com/didi/archive/2010/06/13/1757894.html //dojo.publish 和 dojo.subscribe  :d ...

  8. Linux内核system_call中断处理过程

    “平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” men ...

  9. Android 自定义title 之Action Bar

    Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆   微信分享:   Action Ba ...

  10. js高级技巧之高级定时器

    实际上,浏览器负责进行排序,指派某段代码在某个时间点运行的优先级. 可以吧js想象成在时间线上运行的. JavaScript中没有任何代码是立刻执行的,但一旦进程空闲则尽快执行. 1.重复的定时器: ...