zoukankan      html  css  js  c++  java
  • bzoj1053: [HAOI2007]反素数ant

    51nod有一道类似的题。。。我至今仍然不会写暴搜!!!

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define rep(i,s,t) for(int i=s;i<=t;i++)
    #define dwn(i,s,t) for(int i=s;i>=t;i--)
    #define clr(x,c) memset(x,c,sizeof(x))
    #define ll long long
    const ll a[]={0,2,3,5,7,11,13,17,19,23,29,31,37};
    ll ans,res,n;
    void dfs(ll x,ll num,ll sum,ll cnt,ll p){
        //printf("%d %d %d %d %d
    ",x,num,sum,cnt,p);
        if(res==cnt*(num+1)&&ans>sum){//这里应该让ans尽量小。 
            ans=sum;
        }
        if(res<cnt*(num+1)){
            ans=sum,res=cnt*(num+1);
        }
        if(num+1<=p&&sum*a[x]<=n) dfs(x,num+1,sum*a[x],cnt,p);
        rep(i,x+1,12){
            if(sum*a[i]<=n) dfs(i,1,sum*a[i],cnt*(num+1),num);
        }
    }
    int main(){
        scanf("%lld",&n);
        dfs(1,0,1,1,100);//当前数,num,当前数的乘积,约数和,前一个数的个数。
        printf("%lld
    ",ans);
        return 0; 
    }
    

      

    1053: [HAOI2007]反素数ant

    Time Limit: 10 Sec  Memory Limit: 162 MB
    Submit: 2714  Solved: 1536
    [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

     

    Source

     
    [Submit][Status][Discuss]
  • 相关阅读:
    机器视觉行业分析
    lua sample code analysis
    My GPU info from "GPU Caps Viewer"
    网页hack程序编写
    debug redmine send email
    如何下载web资源
    看国内网络电视解决方案2
    看国内网络电视解决方案
    babel-polyfill使用与性能优化
    升级NGINX支持HTTP/2服务端推送
  • 原文地址:https://www.cnblogs.com/fighting-to-the-end/p/5859384.html
Copyright © 2011-2022 走看看