/*
我尼玛这题不想说啥了
亏了高精写的熟.....
加减乘除max都写了
高精二分
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 1010
#define memcpy(a,b); for(int i=0;i<=1000;i++)a[i]=b[i];
using namespace std;
int n[maxn],len,l[maxn],r[maxn],mid[maxn],ans[maxn];
char s[maxn];
void Plus(int a[maxn],int b[maxn]){
int L=max(a[],b[]);
int c[maxn];memset(c,,sizeof(c));
for(int i=;i<=L;i++)
c[i]=a[i]+b[i];
for(int i=;i<=L;i++)
if(c[i]>){c[i+]++;c[i]%=;}
if(c[L+])L++;c[]=L;
memcpy(a,c);
}
void Sub(int a[maxn]){
a[]--;
int p=;
while(a[p]<){
a[p]=;p++;a[p]--;
}
if(a[a[]]==)a[]--;
}
void Mul(int a[maxn],int b[maxn]){
int c[maxn];memset(c,,sizeof(c));
int l1=a[],l2=b[],l3=l1+l2;
for(int i=;i<=l1;i++){
int x=;
for(int j=;j<=l2;j++){
c[j+i-]+=a[i]*b[j]+x;
x=c[i+j-]/;
c[i+j-]=c[i+j-]%;
}
c[i+l2]=x;
}
int k=;
for(int i=l3;i>=;i--)
if(c[i]){k=i;break;}
c[]=k;memcpy(a,c);
}
void Div(int a[maxn],int x){
int b[maxn],c=;memset(b,,sizeof(b));
for(int i=a[];i>=;i--){
b[i]=(c*+a[i])/x;c=a[i]%x;
}
int k=;
for(int i=a[];i>=;i--)
if(b[i]){k=i;break;}
b[]=k;memcpy(a,b);
}
bool Cmp(int a[maxn],int b[maxn]){
if(a[]<b[])return ;
else if(a[]>b[])return ;
for(int i=a[];i>=;i--){
if(a[i]<b[i])return ;
if(a[i]>b[i])return ;
}
return ;
}
void Cal(int x[maxn]){
int a[maxn],b[maxn],c[maxn],d[maxn],e[maxn];
e[]=;e[]=;memset(a,,sizeof(a));
memcpy(b,x);memcpy(c,x);memcpy(d,x);
Mul(b,x);Mul(b,x);Mul(c,x);Mul(d,e);
Plus(a,b);Plus(a,c);Plus(a,d);
memcpy(x,a);
}
bool Judge(int a[maxn]){
int b[maxn];memcpy(b,a);
Cal(b);
return Cmp(b,n);
}
void cal(int a[maxn]){
int b[maxn],c[maxn];
memcpy(b,l);memcpy(c,r);
Plus(b,c);Div(b,);
memcpy(a,b);
}
int main()
{
scanf("%s",s);
len=strlen(s);
for(int i=;i<=len;i++)
n[i]=s[len-i]-'';
n[]=len;
l[]=;r[]=;
for(int i=;i<=;i++)r[i]=;
while(Cmp(l,r)){
cal(mid);int a[maxn];
memset(a,,sizeof(a));
a[]=;a[]=;
if(Judge(mid)){
memcpy(l,mid);
Plus(l,a);
memcpy(ans,mid);
}
else{
memcpy(r,mid);
Sub(r);
}
}
for(int i=max(ans[],);i>=;i--)
printf("%d",ans[i]);
return ;
}

vijos P1375 大整数(高精不熟的一定要做!)的更多相关文章

  1. 【老鸟学算法】大整数乘法——算法思想及java实现

    算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...

  2. 无人驾驶—高精地图和V2X

    高精地图将厘米级的静态信息传传递给无人车V2X将路况上的动态信息传递给无人车 高精地图的作用 高精地图与传统地图的对比 高精地图与定位的关系 上图左侧是感知到的区域,右侧是高精地图,之后进行拼接获得车 ...

  3. codevs 3119 高精度练习之大整数开根 (各种高精+压位)

    /* codevs 3119 高精度练习之大整数开根 (各种高精+压位) 二分答案 然后高精判重 打了一个多小时..... 最后还超时了...压位就好了 测试点#1.in 结果:AC 内存使用量: 2 ...

  4. 大整数因子(高精mod)

    大整数的因子 总时间限制:  1000ms 内存限制:  65536kB 描述 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入 一个非 ...

  5. Linux 高精確的時序(sleep, usleep,nanosleep) from:http://blog.sina.com.cn/s/blog_533ab41c0100htae.html

    Linux 高精確的時序(sleep, usleep,nanosleep) (2010-04-14 17:18:26) 转载▼ 标签: 杂谈 分类: linux 首先, 我会说不保证你在使用者模式 ( ...

  6. POJ 1001 解题报告 高精度大整数乘法模版

    题目是POJ1001 Exponentiation  虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...

  7. noip 2012 国王游戏(贪心+高精)

    /* 我是不会说我考试的时候想到了正解却把金币取大看成金币求和的.... 觉得只按左右手乘积排序不太对 有反例 也可能我反例放到这个题里是错的吧 按自己的理解排的序 就是各种讨论... 假设 第i个人 ...

  8. 大整数算法[11] Karatsuba乘法

    ★ 引子         前面两篇介绍了 Comba 乘法,最后提到当输入的规模很大时,所需的计算时间会急剧增长,因为 Comba 乘法的时间复杂度仍然是 O(n^2).想要打破乘法中 O(n^2) ...

  9. 大整数算法[09] Comba乘法(原理)

    ★ 引子          原本打算一篇文章讲完,后来发现篇幅会很大,所以拆成两部分,先讲原理,再讲实现.实现的话相对复杂,要用到内联汇编,要考虑不同平台等等. 在大整数计算中,乘法是非常重要的,因为 ...

随机推荐

  1. App Store生存指南

    资格获取   如果已经有App Store开发帐号请跳过此节.   App Store的资格获取其实一直以来都不算难,和其它事情一样,需要的只是耐心.现在苹果对申请者的文书手续要求已经比几年前简化多了 ...

  2. 3ds max 2016 新功能

    3ds max 2016 新功能_MCG节点编辑器 这是介绍视频下载: http://pan.baidu.com/s/1gds4wqJ

  3. 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

    [文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...

  4. BZOJ 1019 汉诺塔

    Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的操 ...

  5. ORACLE PL/SQL异常处理(Exception)学习笔记

    1.PL/SQL错误类型 错误类型 报告者 处理方法 编译时错误 PL/SQL编译器 交互式地处理:编译器报告错误,你必须更正这些错误 运行时错误 PL/SQL运行时引擎 程序化地处理:异常由异常处理 ...

  6. javascript summary

    Client Javascript HTML5: http://www.html5rocks.com/en/ Libraray: JQuery, JQuery Mobile, Zepto, MoolT ...

  7. Prime Path(poj 3126)

    Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...

  8. 一点BPXA的思考

    懂的人自然懂... BPXA功能配置 这个概念现在还有印象,记录下来: 一,BPXA是用于BP使用第三方资源的.如使用ORACLE数据库,就是在XA里配置.它的特征是以<xa>开头 二,B ...

  9. ibatis报错

    关键词:org.springframework.dao.DataIntegrityViolationException 在程序中进行数据库插入操作时报错如下: 未知异常:org.springframe ...

  10. 使用 Spring Data JPA 简化 JPA 开发

    从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...