• URAL1748. The Most Complex Number


    1748

    反素数

    素数的个数随大小的递增而递减 可以相同 

    注意各种超啊 

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<cmath>
     7 using namespace std;
     8 #define INF 1e19
     9 #define LL unsigned long long
    10 #define N 32000
    11 int p[N],f[N],g,po[N];
    12 LL maxz,tt,pp[N][100],n;
    13 void init()
    14 {
    15     int i,j;
    16 
    17     for(i = 2; i < N ; i++)
    18     if(!f[i])
    19     {
    20         for(j = i+i ; j < N ; j+=i)
    21         f[j] = 1;
    22     }
    23     for(i = 2; i < N ; i++)
    24     if(!f[i])
    25     p[++g] = i;
    26     for(i = 1; i <= g ; i++)
    27     {
    28         pp[p[i]][1] = p[i];
    29         for(j = 2 ; ; j++)
    30         {
    31             double ss = (double)pp[p[i]][j-1]*p[i];
    32             if(ss>INF) break;
    33             pp[p[i]][j]=ss;
    34             //cout<<ss<<endl;
    35 
    36         }
    37         po[i] = j-1;
    38     }
    39 }
    40 void dfs(LL s,int k,int o,LL sum)
    41 {
    42     int i;
    43     LL ts =s;
    44     if(o>15) return ;
    45     if(maxz<sum||(maxz==sum&&tt>s))
    46     {
    47         maxz = sum;
    48         tt = s;
    49     }
    50     for(i = 1; i <= min(k,po[o]) ; i++)
    51     {
    52         if(n/s<pp[p[o]][i]) break;
    53         s*=pp[p[o]][i];
    54         dfs(s,i,o+1,sum*(LL)(i+1));
    55         s = ts;
    56     }
    57 }
    58 int main()
    59 {
    60     int t,i;
    61     init();
    62     cin>>t;
    63     while(t--)
    64     {
    65         cin>>n;
    66         maxz=1,tt=1;
    67         for(i = 1; i < po[2] ; i++)
    68         {
    69             LL s = pp[2][i];
    70             if(s>n)
    71             {
    72                 if(i>maxz)
    73                 {
    74                     maxz = i;
    75                     tt = pp[2][i-1];
    76                 }
    77                 break;
    78             }
    79             dfs(s,i,2,i+1);
    80         }
    81         cout<<tt<<" "<<maxz<<endl;
    82     }
    83     return 0;
    84 }
    View Code
  • 相关阅读:
    QT生成流水账号
    Qt实现端口扫描器
    Qtablevies获取内容
    Qt中暂停线程的执行
    Qt经典出错信息之undefined reference to `vtable for classname
    Qt中 QString 和int, char等的“相互”转换
    caffe实现自己的层
    获取minist数据并转换成lmdb
    命名空间下接类,比如common.cpp
    caffe这个c++工程的目录结构
  • 原文地址:https://www.cnblogs.com/shangyu/p/3411883.html
Copyright © 2020-2023  润新知