zoukankan      html  css  js  c++  java
  • ZOJ 2562 More Divisors

    又是个水题,刚刚开始没有用搜索,因为对于反素数有:

    n=2^t1*3^t2^5^t3*7^t4..... 这里有 t1>=t2>=t3>=t4。

    而且相同的因数的情况下,素数越不同越好。

    哪知道这个方法错了! = =。

    看来还得中规中矩得用dfs。

    我觉得还可以优化下,感觉搜索干了很多无用的活儿。

    搜索还得好好练练啊...

     1 #include<cstdio>
     2 #define LL long long
     3 using namespace std;
     4 int prim[16] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 };
     5 LL n,bestnum,bestsum;
     6 void dfs(LL num,LL sum,LL k,LL limit)
     7 {
     8     if(num>bestnum)
     9     {
    10         bestnum=num;
    11         bestsum=sum;
    12     }
    13     if(num==bestnum&&bestsum>sum)
    14         bestsum=sum;
    15     if(k>14) return;
    16     for(int i=1;i<=limit;i++)
    17     {
    18         if(sum*prim[k]>n) break;
    19         sum*=prim[k];
    20         dfs(num*(i+1),sum,k+1,i);
    21     }
    22 }
    23 int main()
    24 {
    25     while(scanf("%lld",&n)!=EOF)
    26     {
    27         bestnum=0,bestsum=n;
    28         dfs(1,1,0,50);
    29         printf("%lld
    ",bestsum);
    30     }
    31     return 0;
    32 }
    View Code
  • 相关阅读:
    ntpdate
    动态查看日志
    eclipse proxy
    远程调试
    pe and elf
    03scikit-learn非监督学习
    15管家婆小项目
    02scikit-learn模型训练
    01scikit-learn数据集下载
    scikit-learn中文api
  • 原文地址:https://www.cnblogs.com/yours1103/p/3281421.html
Copyright © 2011-2022 走看看