zoukankan      html  css  js  c++  java
  • [BZOJ1053][SDOI2005]反素数ant 数学

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1053

    假设这个最大的反素数为$x$,那么$1<p<x$中数的因子数都没有$x$多,而$x<p<n$中若出现比$x$因子数多的$p$,则可以找到一个新的更大的反素数。所以$x$就是$1<p<=n$中因子数最多的数。

    考虑用质数来构造$x$,于是我们发现$2*3*5*7*11*13*17*23*27*29$大于了$2*10^{9}$,显然在不选择$29$的情况下,选$31$是没有意义的,所以我们只需要用这10个质数就行了。

    然后搜索找出因子数最多的数,计算因子数个数的公式不多提了大家都知道。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 typedef long long ll;
     6 const int pri[]={0,2,3,5,7,11,13,17,19,23,29,31},cnt=11;
     7 ll N,Ans=0,Tot=0;
     8 void dfs(int k,ll num,ll tot){
     9     if(k>cnt){
    10         if(tot>Tot||(num<Ans&&tot==Tot)){
    11             Ans=num;
    12             Tot=tot;
    13         }
    14         return;
    15     }
    16     ll tmp=1;
    17     for(int i=1;i<28;i++){
    18         dfs(k+1,num*tmp,tot*i);
    19         tmp*=pri[k];
    20         if(num*tmp>N) return;
    21     }
    22 }
    23 int main(){
    24     scanf("%lld",&N);
    25     dfs(1,1,1);
    26     printf("%lld
    ",Ans);
    27     return 0;
    28 }
  • 相关阅读:
    浏览器渲染
    微信h5页面制作总结
    chrome开发工具指南之综述
    零碎记录
    docker 容器已经启动,但是无法访问
    Docker的安装及使用
    python目录选择
    centos7 设置进程开机自启动
    语句中传入变量
    kafka -> structuredStreaming读取kafka日志 ->自定义输出到mysql
  • 原文地址:https://www.cnblogs.com/halfrot/p/7631767.html
Copyright © 2011-2022 走看看