input

n 1<=n<=2000000000

output

不大于n的最大反质数

对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。
如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数1,2,4,6等都是反质数。

做法:直接打表查找

 #include <cstdio>
#include <queue>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <ctime>
#include <cmath>
#include <cctype>
#define MAX 100000
#define INF 2000000000
#define LL long long
int cas=,T,n,a[MAX],an,p[]={,,,,,,,,,};
struct node
{
int b[],n,v,g; //b数组是质数对应的次方,v是值,g是约数个数,n是质因子个数
bool operator<(node a)const { return v>a.v; }
};
void init()
{
std::priority_queue<node>q;
a[]=;an=;
int ming=;//当前最大的约数个数
node u;
u.v=;u.n=;u.b[]=;u.g=;
q.push(u);
while(!q.empty())
{
u=q.top();q.pop();
// printf("%d %d %d\n",u.v,u.g,u.n);
if(u.g>ming) { ming=u.g;a[an++]=u.v; }//比当前最大约数个数大的统计
else continue;
for(int i=;i<=u.n;i++)//出队后将每个质数对应的次方加一放进队列里
{
node v;
memcpy(&v,&u,sizeof(node));
LL tmp=(LL)v.v*p[i];
v.b[i]++;
v.g=v.g/v.b[i]*(v.b[i]+);
if(tmp<=INF) v.v=tmp;
if(tmp<=INF&&v.g>ming) q.push(v);
// printf("aaa:%d %d %d\n",v.v,v.g,v.n);
}
if(u.n+<)//增加一个质因子
{
node v;
memcpy(&v,&u,sizeof(node));
v.n++;v.b[v.n]=;v.g*=;
LL tmp=(LL)v.v*p[v.n];
if(tmp<=INF) v.v=tmp;
if(tmp<=INF&&v.g>ming) q.push(v);
}
}
a[an++]=INF+;
printf("%d\n",an);
for(int i=;i<an;i++) printf("%d,",a[i]);
}
int main()
{
//freopen("in","r",stdin);
//scanf("%d",&T);
init();
while(scanf("%d",&n)==) printf("%d\n",*(std::upper_bound(a,a+an,n)-));
//printf("time=%.3lf",(double)clock()/CLOCKS_PER_SEC);
return ;
}

HYSBZ 1053 反质数的更多相关文章

  1. [bzoj]1053反质数<暴搜>

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1053 感想:这道题拿到以后还是想去知道一个数的约数个数要怎么求,去网上搜了公式,但是还是没有思 ...

  2. 反素数ant HYSBZ - 1053(数学+dfs)

    对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x为反质数.例如,整数1,2,4,6等都是反质 ...

  3. BZOJ 1053 - 反素数ant - [数论+DFS][HAOI2007]

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 题解: 可以证明,$1 \sim N$ 中最大的反质数,就是 $1 \sim N$ ...

  4. BZOJ1053 [HAOI2007]反素数 & BZOJ3085 反质数加强版SAPGAP

    BZOJ 1053 Description 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x ,则称x ...

  5. CNUOJ 0486 800401反质数

    难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...

  6. 反质数问题,求不大于n的最大反质数

    反质数:设f(n)表示n个约数的个数,如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数 我们都知道对于任意一个数n,都可以用质数乘积的形式表示出来:x = ...

  7. 反质数(Antiprimes)

    转载http://www.cnblogs.com/tiankonguse/archive/2012/07/29/2613877.html 问题描述: 对于任何正整数x,起约数的个数记做g(x).例如g ...

  8. COJN 0486 800401反质数 呵呵呵呵呵

    800401反质数 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1 ...

  9. bzoj:3085: 反质数加强版SAPGAP

    Description 先解释一下SAPGAP=Super AntiPrime, Greatest AntiPrime(真不是网络流),于是你就应该知道本题是一个关于反质数(Antiprime)的问题 ...

随机推荐

  1. [SOJ] 无路可逃?

    Description 唐僧被妖怪关在迷宫中.孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置.假设迷宫是一个n*m的矩阵,它有两种地形,1表示平地,0表示沼泽,孙悟空只能停留在平 ...

  2. 清除HTML标记

    public static string DropHTML(string Htmlstring)        {            if (string.IsNullOrEmpty(Htmlst ...

  3. C#中值类型与引用类型通俗理解

    关于值类型和引用类型已经有很多人写了很多文章,但是很多人也只是停留在字面上的理解,如果采用一种通俗的方法来解释,想必很多人都会理解.我们都知道值类型存储在栈上,引用类型存储在堆上,引用类型都是xxx类 ...

  4. MyEclipse中用Maven创建Web项目

    方法/步骤     new --> other   1.Wizards: mvaen 2.Maven Project 3.Next   Use Default Workspace Locatio ...

  5. 从NPM到CNPM

    从NPM到CNPM   原文  http://www.cnblogs.com/hufeng/p/5166479.html 主题 npm 引用NPM网站上的一句话:npm loves you ! NPM ...

  6. jfianl返回自定义的404页面

    public class MyErrorRenderFactory implements IErrorRenderFactory{ public Render getRender(int errorC ...

  7. 用VB把xls转换为xlsx

    Sub xls批量转换成xlsx()Application.ScreenUpdating = FalseMsgBox "现在开始转换,请稍候!"mypath = ThisWorkb ...

  8. bootstrap如何自定义5等分

    根据bootstrap源码改的1比5的栅格系统 /*5等分媒体查询样式begin*/ .col-xs-1-5,.col-sm-1-5,.col-md-1-5,.col-lg-1-5,.col-xs-4 ...

  9. 随机数生成类Random用法

    一.构造方法: Random()           创建一个新的随机数生成器. Random(long seed)           使用单个 long 种子创建一个新的随机数生成器. 无参构造方 ...

  10. 【MySQL】查询优化实例解析-延迟关联优化

    [提出问题] 从数据表t通过分页查询的方式读取数据,读取时要根据a1排序.t有80万行记录,当OFFSET很大时,读取速度很慢.优化后查询速度提升很快. 下图是表的定义,一共有几十个字段,RowLen ...