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

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=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的最大的反质数。

    看这个吧:这是一个百度文库链接

     1 #include <cstdio>
     2 #define rep(i,l,r) for(int i=l; i<=r; i++)
     3 using namespace std;
     4 typedef long long ll;
     5 const int p[] = {2,3,5,7,11,13,17,19,23,29};
     6 ll n;
     7 int ans,num;
     8 void dfs(int x,ll now,int cnt,int last){ // 第几个质数,从开始搜索至今质数的乘积,质数个数,质数幂的次数 
     9     if (x == 9){
    10         if (now > ans && cnt > num) ans = now, num = cnt;
    11         if (now <= ans && cnt >= num) ans = now, num = cnt;
    12         return;
    13     }
    14     int t = 1;
    15     rep(i,0,last){
    16         dfs(x+1,now*t,cnt*(i+1),i);
    17         t *= p[x];
    18         if (now * t > n) break;
    19     }
    20 }
    21 int main(){
    22     scanf("%lld",&n);
    23     dfs(0,1,1,10);
    24     printf("%d
    ",ans);
    25     return 0;
    26 }
    View Code
  • 相关阅读:
    C#_Assembly-Reflection_程序集与反射
    C#_event_事件
    C#_扩展方法
    C#_Delegate_泛型
    C#_正则表达式
    C#_序列化
    Unity_ClickToShow_FadeInAndOut
    RecordToday
    写作技巧
    高效休息法
  • 原文地址:https://www.cnblogs.com/jimzeng/p/bzoj1053.html
Copyright © 2011-2022 走看看