vijos P1375 大整数(高精不熟的一定要做!)
/*
我尼玛这题不想说啥了
亏了高精写的熟.....
加减乘除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 大整数(高精不熟的一定要做!)的更多相关文章
- 【老鸟学算法】大整数乘法——算法思想及java实现
算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...
- 无人驾驶—高精地图和V2X
高精地图将厘米级的静态信息传传递给无人车V2X将路况上的动态信息传递给无人车 高精地图的作用 高精地图与传统地图的对比 高精地图与定位的关系 上图左侧是感知到的区域,右侧是高精地图,之后进行拼接获得车 ...
- codevs 3119 高精度练习之大整数开根 (各种高精+压位)
/* codevs 3119 高精度练习之大整数开根 (各种高精+压位) 二分答案 然后高精判重 打了一个多小时..... 最后还超时了...压位就好了 测试点#1.in 结果:AC 内存使用量: 2 ...
- 大整数因子(高精mod)
大整数的因子 总时间限制: 1000ms 内存限制: 65536kB 描述 已知正整数k满足2<=k<=9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k. 输入 一个非 ...
- 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 首先, 我会说不保证你在使用者模式 ( ...
- POJ 1001 解题报告 高精度大整数乘法模版
题目是POJ1001 Exponentiation 虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...
- noip 2012 国王游戏(贪心+高精)
/* 我是不会说我考试的时候想到了正解却把金币取大看成金币求和的.... 觉得只按左右手乘积排序不太对 有反例 也可能我反例放到这个题里是错的吧 按自己的理解排的序 就是各种讨论... 假设 第i个人 ...
- 大整数算法[11] Karatsuba乘法
★ 引子 前面两篇介绍了 Comba 乘法,最后提到当输入的规模很大时,所需的计算时间会急剧增长,因为 Comba 乘法的时间复杂度仍然是 O(n^2).想要打破乘法中 O(n^2) ...
- 大整数算法[09] Comba乘法(原理)
★ 引子 原本打算一篇文章讲完,后来发现篇幅会很大,所以拆成两部分,先讲原理,再讲实现.实现的话相对复杂,要用到内联汇编,要考虑不同平台等等. 在大整数计算中,乘法是非常重要的,因为 ...
随机推荐
- App Store生存指南
资格获取 如果已经有App Store开发帐号请跳过此节. App Store的资格获取其实一直以来都不算难,和其它事情一样,需要的只是耐心.现在苹果对申请者的文书手续要求已经比几年前简化多了 ...
- 3ds max 2016 新功能
3ds max 2016 新功能_MCG节点编辑器 这是介绍视频下载: http://pan.baidu.com/s/1gds4wqJ
- 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
[文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...
- BZOJ 1019 汉诺塔
Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体. 对汉诺塔的一次合法的操 ...
- ORACLE PL/SQL异常处理(Exception)学习笔记
1.PL/SQL错误类型 错误类型 报告者 处理方法 编译时错误 PL/SQL编译器 交互式地处理:编译器报告错误,你必须更正这些错误 运行时错误 PL/SQL运行时引擎 程序化地处理:异常由异常处理 ...
- javascript summary
Client Javascript HTML5: http://www.html5rocks.com/en/ Libraray: JQuery, JQuery Mobile, Zepto, MoolT ...
- Prime Path(poj 3126)
Description The ministers of the cabinet were quite upset by the message from the Chief of Security ...
- 一点BPXA的思考
懂的人自然懂... BPXA功能配置 这个概念现在还有印象,记录下来: 一,BPXA是用于BP使用第三方资源的.如使用ORACLE数据库,就是在XA里配置.它的特征是以<xa>开头 二,B ...
- ibatis报错
关键词:org.springframework.dao.DataIntegrityViolationException 在程序中进行数据库插入操作时报错如下: 未知异常:org.springframe ...
- 使用 Spring Data JPA 简化 JPA 开发
从一个简单的 JPA 示例开始 本文主要讲述 Spring Data JPA,但是为了不至于给 JPA 和 Spring 的初学者造成较大的学习曲线,我们首先从 JPA 开始,简单介绍一个 JPA 示 ...