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( ...
随机推荐
- Base64转换二进制文件对象 Blob/Base64转换 File 对象
function convertBase64UrlToBlob(urlData) { var arr = dataurl.split(','),//去掉url的头,并转换为byte type = ar ...
- tensorflow ckpt文件转caffemodel时遇到的坑
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- 447. Number of Boomerangs
Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of po ...
- css弹性盒子新旧兼容
前言:本篇随笔是对弹性盒子有了解的人来写的这篇文章,具体属性产生的效果这里不做说明,基础的东西去查文档.这里只是总结. 时至今日,css3的flex弹性盒子在移动端基本上都是支持的,但不排除有些些低版 ...
- php程序员面试经验
面试是你进入公司的第一个关卡,面试过后还会有试用期.可有时候总有那么一些人对待面试完全没人任何防备. 如果你想进入一家优秀的企业,那么对于面试你一定要做好十足的准备.为什么说了:"将军不打没 ...
- deepin系统下部署Python3.5的开发及运行环境
deepin系统下部署Python3.5的开发及运行环境 1 概述 由于最近要学习python接口自动化测试,所以记录一下相关学习经过及经验,希望对大家可以有所帮助. 2 下载 在python官网下载 ...
- Hello TensorFlow 三 (Golang)
在一台ubuntu 16.04.2虚拟机上为golang安装TensorFlow. 官方参考:https://www.tensorflow.org/install/install_go 首先安装go ...
- JavaScript的DOM编程--05--获取文本节点
获取文本节点: 1). 步骤: 元素节点 --> 获取元素节点的子节点 2). 若元素节点只有文本节点一个子节点, 例如 <li id="bj" name=" ...
- JQ trigger函数无法触发a标签的两种解决方法
起因:点击icon图标后要触发a标签的链接转跳动作,但是用 JQ 的 $('#a').trigger('click') 居然不起作用,遂百度之,总结两种方法如下: (原因:JQ 的 trigger() ...
- 02-01官网静默模式安装WebLogic
参考连接:https://docs.oracle.com/middleware/11119/wls/WLSIG/silent.htm#CIHCAHGC 以静默模式运行安装程序 本章介绍如何以静默方式运 ...