zoukankan      html  css  js  c++  java
  • BZOJ 1053 反素数

    Description

    对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。
    如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。
    现在给定一个数N,你能求出不超过N的最大的反质数么?

    Input

    一个数N(1<=N<=2,000,000,000)。

    Output

    不超过N的最大的反质数。

    Sample Input

    1000

    Sample Output

    840

    HINT

     

    Source

    开始没有想清楚这个问题的本质,半小时后才发现这TM不就是要求1-n中约数最多的最小数。(自己稍微yy一下应该就可以了。)

    然后我们就要求1-n中约数最多的最小数。这个我们采用暴搜的方法,枚举每个质数的质数,推过去即可。

    开始我的质数范围是1-√n,果断TLE。其实只要用前12个质数就可以了,因为质数大了反而没有小质数对答案的贡献那么大。

     1 #include<cmath>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 using namespace std;
     5 
     6 typedef long long ll;
     7 int best,most,n,tot = 12;
     8 int prime[15] = {0,2,3,5,7,11,13,17,19,23,29,31,37};
     9 
    10 inline void dfs(ll now,ll num,int last)
    11 {
    12     if (num > most) most = num,best = now;
    13     else if (num == most && now < best) best = now;
    14     for (int i = last;i <= tot;++i)
    15     {
    16         ll key = 1;
    17         for (int j = 1;;++j)
    18         {
    19             key *= (ll)prime[i];
    20             if (now*key > n) break;
    21             dfs(now*key,num*(j+1),i+1);
    22         }
    23     }
    24 }
    25 
    26 int main()
    27 {
    28     freopen("1053.in","r",stdin);
    29     freopen("1053.out","w",stdout);
    30     scanf("%d",&n); 
    31     dfs(1,1,1); printf("%d",best);
    32     fclose(stdin); fclose(stdout);
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    pytorch实现rnn并且对mnist进行分类
    python中的list按照某一列进行排序的方法
    pytorch实现style transfer
    Pytorch基本变量类型FloatTensor与Variable
    Linux上统计文件夹下文件个数以及目录个数
    python调用caffe实现预测
    python调用caffe环境配置
    JS实现唤起手机APP应用,如果本地没有则跳转到下载地址
    PHP开发中使用的工具
    Linux安装redis服务
  • 原文地址:https://www.cnblogs.com/mmlz/p/4285019.html
Copyright © 2011-2022 走看看