bzoj:3085: 反质数加强版SAPGAP
Description
Input
Output
Sample Input
Sample Output


#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的更多相关文章
- BZOJ 3085: 反质数加强版SAPGAP (反素数搜索)
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3085 题意:求n(<=10^100)之内最大的反素数. 思路: 优化2: i ...
- 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 ...
- BZOJ 4857 反质数序列
题面 奇数+奇数一定不是质数(1+1除外),偶数+偶数一定不是质数,质数只可能出现在偶数+奇数中 把所有的点排成两列,权值为奇数的点在左边,权值为偶数的在右边 如果左边的点x+右边的点y是质数,我们就 ...
- [bzoj]1053反质数<暴搜>
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1053 感想:这道题拿到以后还是想去知道一个数的约数个数要怎么求,去网上搜了公式,但是还是没有思 ...
- CNUOJ 0486 800401反质数
难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1,g(4)=3, g ...
- 反质数问题,求不大于n的最大反质数
反质数:设f(n)表示n个约数的个数,如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数 我们都知道对于任意一个数n,都可以用质数乘积的形式表示出来:x = ...
- 反质数(Antiprimes)
转载http://www.cnblogs.com/tiankonguse/archive/2012/07/29/2613877.html 问题描述: 对于任何正整数x,起约数的个数记做g(x).例如g ...
- COJN 0486 800401反质数 呵呵呵呵呵
800401反质数 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 将正整数 x 的约数个数表示为 g(x).例如,g(1)=1 ...
- HYSBZ 1053 反质数
input n 1<=n<=2000000000 output 不大于n的最大反质数 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g( ...
随机推荐
- Android Weekly Notes Issue #288
Android Weekly Issue #288 December 17th, 2017 Android Weekly Issue #288 本期内容主要包括介绍Kotlin DSL使用kotlin ...
- SVO环境搭建
我是装了双系统,实验OS:Ubuntu14.04 Installation: Plain CMake (No ROS) 首先,建立一个工作目录比如:workspace,然后把下面的需要的都在该目录下进 ...
- bzoj 2756: [SCOI2012]奇怪的游戏
Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 B ...
- 搭建和测试 Redis 主备和集群
本文章只是自我学习用,不适宜转载. 1. Redis主备集群 1.1 搭建步骤 机器:海航云虚机(2核4GB内存),使用 Centos 7.2 64bit 操作系统,IP 分别是 192.168.10 ...
- Python-字典dict对象方法总结
- centos7 部署dns服务器
=============================================== 2017/12/6_第2次修改 ccb_warlock 20 ...
- 【http转https】其之三 IIS_URL重写_http重定向到https
IIS_URL重写_http重定向到https 文:铁乐猫 2016年1月14日 IIS7以上支持URL Rewrite这个模块了,所以在我们做好了ssl证书这一块之后, 要对来自http的请求重定向 ...
- jingtai ip
BOOTPROTO=staticONBOOT=yesIPADDR=192.168.1.109NETMASK=255.255.255.0GATEWAY=192.168.1.1 HWADDR=00:e0: ...
- Django学习日记06_视图_URLconf、View
URLconf Django通过URLconf来响应网页请求,在项目设置settings.py中,设定了ROOT_URLCONF值来指定默认的URLconf(即mysite.urls),当HTTPRe ...
- AFNetWorking 对汉字部分UTF-8编码
随笔记一下 好用的小技巧 1.将字典数据拼接成url的参数... AFQueryStringFromParameters NSString *query = AFQueryStringFromPara ...