Description

先解释一下SAPGAP=Super AntiPrime, Greatest AntiPrime(真不是网络流),于是你就应该知道本题是一个关于反质数(Antiprime)的问题。下面给出反质数的定义:
将一个正整数i的约数个数记为g(i),如g(1)=1,g(2)=2,g(6)=4。
如果对于一个正整数k,对于任意正整数i<k,均有g(k)>g(i),则k被称为反质数。
比如说1,2,4,6,12就是前5个反质数。
现在给定一个N,求N以内最大的反质数。
你一定会认为这道题很简单,你曾经做过好多遍(它就是许许多多竞赛的原题呀),但是这次真的不一样。
 

Input

一个正整数N(1≤N≤10100)。
 

Output

一个正整数,表示不超过N的最大的反质数。
 

Sample Input

1000

Sample Output

840
 
 
套个高精度模板,然后搜个索,剪个枝就好了……
 
壮哉我大云神……
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<ctime>
using namespace std; const int bi=1e4,MN=;
char c[];
int pr[]={,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,};
struct big{
int a[MN];
inline big(){
memset(a,,sizeof(a));
a[]=;
}
inline void read(){
register int i,j;
scanf("%s",c);
a[]=(strlen(c)+)/;
for (i=;i<strlen(c);i++) j=(strlen(c)-i+)/,a[j]=a[j]*+c[i]-;
}
inline void pr(){
register int i;
printf("%d",a[a[]]);
for (i=a[]-;i;i--) printf("%04d",a[i]);
}
inline big operator =(int x){
if (x==){
memset(a,,sizeof(a));
a[]=;
}
a[]=;
while (x){
a[]++;
a[a[]]=x%bi;
x/=bi;
}
if (!a[]) a[]=;
}
inline big(int x){
*this=x;
}
inline void gl(){
while(!a[a[]]&&a[]>) a[]--;
}
inline big operator =(big x){
register int i;
a[]=x.a[];
for (i=;i<=a[];i++) a[i]=x.a[i];
}
inline bool operator >(big y){
if (a[]!=y.a[]) return a[]>y.a[];
for (register int i=a[];i;i--){
if (a[i]!=y.a[i]) return a[i]>y.a[i];
}
return ;
}
inline bool operator >=(const big y){
if (a[]!=y.a[]) return a[]>y.a[];
for (register int i=a[];i;i--){
if (a[i]!=y.a[i]) return a[i]>y.a[i];
}
return ;
}
inline bool operator <(big y){
if (a[]!=y.a[]) return a[]<y.a[];
for (register int i=a[];i;i--){
if (a[i]!=y.a[i]) return a[i]<y.a[i];
}
return ;
}
inline bool operator <=(big y){
if (a[]!=y.a[]) return a[]<y.a[];
for (register int i=a[];i;i--){
if (a[i]!=y.a[i]) return a[i]<y.a[i];
}
return ;
}
inline bool operator ==(big y){
if (a[]!=y.a[]) return ;
for (register int i=a[];i;i--){
if (a[i]!=y.a[i]) return ;
}
return ;
}
inline bool operator !=(big y){
return !(*this==y);
}
inline bool operator ==(int y){
big x=y;
return *this==x;
}
inline bool operator !=(int y){
return !(*this==y);
}
inline void swap(big &a,big &b){
big x=a;a=b;b=x;
}
inline big operator +(big x){
big r;
if (a[]<x.a[]) r.a[]=x.a[];else r.a[]=a[];
for (register int i=;i<=r.a[];i++) r.a[i]=a[i]+x.a[i];
for (register int i=;i<=r.a[];i++)
if (r.a[i]>=bi){
r.a[i]-=bi;r.a[i+]++;
if (i==r.a[]) r.a[]++;
}
return r;
}
inline big operator -(big x){
if (*this<x) swap(*this,x);
register int i;
big r;
if (a[]<x.a[]) r.a[]=x.a[];else r.a[]=a[];
for (i=;i<=r.a[];i++) r.a[i]=a[i]-x.a[i];
for (i=;i<=r.a[];i++)
if (r.a[i]<){
r.a[i+]--;r.a[i]+=bi;
}
r.gl();
return r;
}
inline big operator *(big y){
register int i,j;
big r;r.a[]=a[]+y.a[]-;
for (i=;i<=a[];i++)
for (j=;j<=y.a[];j++) r.a[i+j-]+=a[i]*y.a[j];
for (i=;i<=r.a[];i++)
if (r.a[i]>=bi){
r.a[i+]+=r.a[i]/bi;
r.a[i]%=bi;
if (i==r.a[]) r.a[]++;
}
return r;
}
inline big half(){
register int i,j;
for (i=a[];i>;i--) a[i-]+=(a[i]%)*bi,a[i]/=;
a[]/=;
gl();
return *this;
}
inline big operator /(big y){
register int i,j;
big r,l,mid,rq=*this;
r.a[]=rq.a[]+;r.a[r.a[]]=;
while(r>l){
mid=(l+r+big()).half();
if (mid*y<=rq) l=mid;else r=mid-big();
}
return l;
}
inline big operator %(big y){
register int i,j;
big rq=*this;
return rq-(rq/y*y);
}
}n,ans;
long long cu;
void dfs(int pos,int p,big sum,long long su){
if (pos==&&p>) p=;else
if (pos==&&p>) p=;else
if (pos==&&p>) p=;else
if (pos==&&p>) p=;else
if (pos==&&p>) p=;
if (pos>||sum>n) return;
if ((su>cu)||(sum<ans&&cu==su)) cu=su,ans=sum;
for (register int i=;i<=p;i++){
sum=sum*big(pr[pos]);
if (sum>n) return;
dfs(pos+,i,sum,su*(i+));
}
}
int main(){
n.read();
dfs(,,big(),);
ans.pr();
}

bzoj:3085: 反质数加强版SAPGAP的更多相关文章

  1. BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...

  2. 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 ...

  3. BZOJ 4857 反质数序列

    题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...

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

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

  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. HYSBZ 1053 反质数

    input n 1<=n<=2000000000 output 不大于n的最大反质数 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g( ...

随机推荐

  1. 关于Sublime Text编辑器的实用技巧

    本文转载至一篇博文,为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能. 1) 选择 以下是一些Sublime Text ...

  2. iOS 通过UIControl,自定义控件

    如:自定义一个可以点击的 图文 #import <UIKit/UIKit.h> @interface UD_Button : UIControl @property(nonatomic,s ...

  3. 最全linux命令

    arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI ...

  4. Hawk原理:通过IEnumerable实现通用的ETL管道

    针对IEnumerable已经有多篇文章,本篇介绍如何使用IEnumerable实现ETL. ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(ex ...

  5. IIS加载JSON文件 错误 404

    问题描述 在发布项目的时候,有一些文件是json文件,在网页中进行加载,但是在IIS7发布的时候,json文件居然是404,无法找到,在URL上输入地址也一样. 错误原因 IIS内部机制,不支持直接访 ...

  6. 【转】java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

    最近在配置最新的ssh(struts2.3.16.3+hibernate4.3.7+spring4.1.2)的时候遇到的这个错误提示,后来在网上找了半天都不能解决,虽然有个说法是model对象用这样@ ...

  7. C# DataGridVie利用model特性动态加载列

    今天闲来无事看到ORm的特性映射sql语句.我就想到datagridview也可以用这个来动态添加列.这样就不用每次都去界面上点开界面填列了. 代码简漏希望有人看到了能指点一二. 先定义好Datagr ...

  8. sql sever[基本] ''增删改'' 随笔

    结构语言分类 DDL(数据定义语言)  create  drop  alter   创建删除以及修改数据库,表,存储过程,触发器,索引.... DML(数据操作语言)   insert  delete ...

  9. 启用composer镜像服务

    使用composer下载东西,需要FQ时,可使用其镜像服务 安装composer后,命令行执行全局配置 composer config -g repo.packagist composer https ...

  10. Ruby学习之元编程

    Kernel#evel()方法 和Object#instance_evel().Module#class_evel()方法类似,evel()方法也是一个内核方法,Object#instance_eve ...