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
  • 相关阅读:
    python面向对象__call__
    python的上下文管理协议
    python析构方法__del__
    next和iter可迭代协议
    __slots__ 用法
    定制自己的数据类型
    内置的Attr系列
    反射和自省
    isinstance和issubclass
    BLE 学习
  • 原文地址:https://www.cnblogs.com/yours1103/p/3281421.html
Copyright © 2011-2022 走看看