题意:给定n求,有n个因子的最小正整数。

题解:水题,zcr都会,我就不说什么了。

  因数个数球求法应该知道,将m分解质因数,然后发现 a1^p1*a2^p2....an^pn这样一个式子,

  (1+p1)*(1+p2)*...=n,然后用小的质数填坑。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int pri[] = {,,,,,,,,,,,,,,,,};
  5. int n, ans[], res[], tmp[];
  6. double lg[], mn=DBL_MAX;
  7.  
  8. void input()
  9. {
  10. scanf("%d", &n);
  11. for(int i=; i<=; i++) lg[i] = log(pri[i]);
  12. }
  13.  
  14. void dfs(double x, int y, int z){//现在的数是e^x,还剩下y个因子,选到第z个质数
  15. if(x >= mn) return;
  16. if(y == ){
  17. mn = x;
  18. memset(res, , sizeof(res));
  19. for(int i=; i<=z-;i++) res[i]=tmp[i];
  20. return;
  21. }
  22. if(z>) return;
  23. for(int i = ; (i+)*(i+)<=y; i++){
  24. if(y%(i+)==)
  25. {
  26. if(i != ){
  27. tmp[z] = i;
  28. dfs(x+lg[z]*i, y/(i+), z+);
  29. }
  30. if((i+)*(i+)!=y){
  31. tmp[z] = y/(i+)-;
  32. dfs(x+lg[z]*(y/(i+)-), i+, z+);
  33. }
  34. }
  35. }
  36. }
  37.  
  38. void work()
  39. {
  40. dfs(, n, );
  41. }
  42.  
  43. void output()
  44. {
  45. ans[]=ans[]=;
  46. for(int i=;i<=;i++){
  47. for(;res[i]>;res[i]--){
  48. for(int j=;j<=ans[];j++) ans[j]*=pri[i];
  49. for(int j=;j<=ans[];j++) ans[j+]+=ans[j]/, ans[j]%=;
  50. if(ans[ans[]+]!=) ans[]++;
  51. while(ans[ans[]]/!=){
  52. ans[ans[]+] += ans[ans[]]/;
  53. ans[ans[]] %= ;
  54. ++ans[];
  55. }
  56. }
  57. }
  58. for(int i = ans[]; i>=; i--){
  59. printf("%d", ans[i]);
  60. }
  61. printf("\n");
  62. }
  63.  
  64. int main()
  65. {
  66. input();
  67. work();
  68. output();
  69. return ;
  70. }

BZOJ 1225: [HNOI2001] 求正整数 高精度+搜索+质数的更多相关文章

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

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

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

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

  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. 实验一:实现求正整数1-N之间所有质数的功能,并进行测试。

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 命令行下的程序开 ...

随机推荐

  1. OSW

    OSWatcher 工具 下载文档 :Metalink Doc ID 301137.1 Oswatcher 主要用于监控主机资源,如CPU,内存,网络以及私有网络等.其中私有网络需要单独配置. 需要说 ...

  2. solr之~模糊查询【转】

    solr之~模糊查询 有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有 ...

  3. AJPFX关于面向对象中的对象初始化整理,综合子父类、代码块等等

    今天总结了一下子父类当中含有静态代码块.代码块.构造函数.成员变量.子类复写父类方法时子类的初始化过程,把思路理清一下 class Fu { //父类成员变量 private int num = 3; ...

  4. VUE 全选

    <div id="vue_det"> <p>全选:</p> <input type="checkbox" id=&qu ...

  5. git忽略文件权限的检查

    在linux上配置了一个samba服务器,方便在linux上通过ide修改代码,然后发现一个很烦人的问题,就是没有修改权限,在使用命令 chmod 777 filename后可以修改了,然而使用git ...

  6. [转]Git分支管理策略

    如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属. 相比同类软件, ...

  7. vue2.0 动态切换组件

    组件标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件. <!DOCTYPE html> <html lang="en" ...

  8. react link引入外部css样式的坑

    刚开始的代码是这样的,使用react router4.x写的demo路由跳转后,页面的没有渲染,是因为没有引入外部css文件(或者说引入外部文件路径错误) <!DOCTYPE html> ...

  9. CE工具里自带的学习工具--第三关

    图解: 重复第5,6,7,8,9步,最终得到:

  10. Win7 与win10绘制桌面壁纸的区别

    win7使用csrss.exe绘制壁纸. win10使用explorer.exe绘制壁纸.