zoukankan      html  css  js  c++  java
  • BZOJ 1053 [HAOI2007]反素数ant

    1053: [HAOI2007]反素数ant

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 4604  Solved: 2780
    [Submit][Status][Discuss]

    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

     题解:先固定因数的数量,对于一个数,他的质因子的指数的数量一定不增 (假设出现后面的质因子的数量多于前面的,则可以交换两者的数量而使得这个数变小),这时候我们只要暴力搜索即可;
    参考代码:
     1 /**************************************************************
     2     Problem: 1053
     3     User: SongHL
     4     Language: C++
     5     Result: Accepted
     6     Time:20 ms
     7     Memory:1288 kb
     8 ****************************************************************/
     9  
    10 #include<bits/stdc++.h>
    11 using namespace std;
    12 typedef long long ll;
    13 ll N,temp,ans;
    14 ll Prime[20]={2,3,5,7,11, 13,17,19,23,29, 31,37,41,43,47, 53,59,61,67,71};
    15 void dfs(int pos,ll y,int len,ll d)
    16 {
    17     if(d>temp || d==temp&&ans>y) ans=y,temp=d;
    18     if(pos>=20) return ;
    19     for(int i=0;i<=len&&y<=N;++i,y*=Prime[pos]) dfs(pos+1,y,i,d*(i+1));
    20 }
    21  
    22 int main()
    23 {
    24    scanf("%lld",&N);
    25    temp=0; dfs(0,1,10000,1);
    26     printf("%lld
    ",ans);
    27     return 0;
    28 }
    29   
    View Code
  • 相关阅读:
    读书书单
    Kafka学习-Producer和Customer
    Kafka学习-简介
    Maven学习-Profile详解
    Maven学习-项目对象模型
    Maven学习-优化和重构POM
    Maven学习-构建项目
    Maven学习-简介、安装
    连接web端,mysql,返回乱码解决
    android alipay
  • 原文地址:https://www.cnblogs.com/csushl/p/9883928.html
Copyright © 2011-2022 走看看