更相减损数。

上手就debug了3个小时,直接给我看哭了。

3个函数都写错了是什么感受?

乘2函数要从前往后乘,这样后面的数乘2进位以后不会干扰前面的数。

除2函数要从后往前除,这样前面的数借来的位不会除2次。

然后函数里面俩个类里面的变量名不要打混。

哭瞎

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxl = 2000 + 10;
const int d[]={10000000,1,10,100,1000,10000,100000,1000000};
char s[20010];
int cnt; struct bigint {
int a[maxl],len; int& operator [] (int x) {
return a[x];
} void init(char s[]) {
int n=strlen(s+1);
len=(n+7)/8;
for(int i=1,t,e;i<=n;i++) {
e=i%8;
t=(i+7)/8;
a[t]+=(s[n-i+1]-'0')*d[e];
}
} void print() {
printf("%d",a[len]);
for(int i=len-1;i>=1;i--) printf("%08d",a[i]);
printf("\n");
} void div() {
for(int i=1;i<=len;i++) {
if(a[i]&1) a[i-1]+=50000000;
a[i]/=2;
}
if(a[len]==0) len--;
a[0]=0;
} void mul() {
for(int i=len;i>0;i--) {
a[i]<<=1;
a[i+1]+=a[i]/100000000;
a[i]%=100000000;
}
while(a[len+1]) len++;
} bigint operator - (bigint b) {
bigint c;
for(int i=1;i<=len;i++) {
c[i]+=a[i]-b[i];
if(c[i]<0) {c[i]+=100000000; c[i+1]--;}
}
c.len=len;
while(!c[c.len] && c.len) c.len--;
return c;
} bool operator < (bigint b) {
if(len != b.len) {
if(len > b.len ) return 0;
else return 1;
} for(int i=len;i>=1;i--) {
if(a[i] != b[i]) {
if(a[i]<b[i]) return 1;
else return 0;
}
}
return 0;
} bigint() {
memset(a,0,sizeof(a));
len=0;
}
}a,b; int main() {
scanf("%s",s+1);
a.init(s);
scanf("%s",s+1);
b.init(s);
cnt=0;
while(1) {
while(!(a[1]&1) && !(b[1]&1)) {cnt++; a.div(); b.div();}
while(!(a[1]&1)) a.div();
while(!(b[1]&1)) b.div(); if(b<a) a=a-b;
else {
b=b-a;
if(b.len==0) {
while(cnt--) a.mul();
a.print();
break;
}
}
}
return 0;
}

bzoj1876: [SDOI2009]SuperGCD的更多相关文章

  1. [BZOJ1876][SDOI2009]superGCD(高精度)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1876 分析: 以为辗转相减会TLE呢……但是好像没这个数据……就这么水过去了…… 辗转 ...

  2. bzoj千题计划288:bzoj1876: [SDOI2009]SuperGCD

    http://www.lydsy.com/JudgeOnline/problem.php?id=1876 高精压位GCD 对于  GCD(a, b)  a>b 若 a 为奇数,b 为偶数,GCD ...

  3. BZOJ1876 [SDOI2009]SuperGCD 【高精 + GCD优化】

    题目 Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比 赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但 ...

  4. 【BZOJ1876】[SDOI2009]SuperGCD(数论,高精度)

    [BZOJ1876][SDOI2009]SuperGCD(数论,高精度) 题面 BZOJ 洛谷 题解 那些说数论只会\(gcd\)的人呢?我现在连\(gcd\)都不会,谁来教教我啊? 显然\(gcd\ ...

  5. BZOJ 1876: [SDOI2009]SuperGCD

    1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3060  Solved: 1036[Submit][St ...

  6. bzoj 1876 [SDOI2009]SuperGCD(高精度+更相减损)

    1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2384  Solved: 806[Submit][Sta ...

  7. BZOJ 1876: [SDOI2009]SuperGCD( 更相减损 + 高精度 )

    更相减损,要用高精度.... --------------------------------------------------------------- #include<cstdio> ...

  8. 【bzoj1876】[SDOI2009]SuperGCD(高精度)

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1876 一道简单的高精度+Stein算法(或者叫辗转相除法)求最大公约数板子题. md还 ...

  9. BZOJ1876:[SDOI2009]SuperGCD——C++高精度良心题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1876 Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数 ...

随机推荐

  1. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  2. Getting Started with Java

    “学前”说明:<Learn Java for Android>这本书内容很多,都是精华,建议大家看英文版的.在这里我不打算一一总结书中的内容,书中每章节后面的exercises都很好,非常 ...

  3. FlashBuilder 4.7 破解方法

    |举报|字号订阅   方法一: 方法问题: 能破解,但破解后启动FB需等待较长时间,等一两分钟吧. 操作步骤: 与其它Adobe CS6破解方法相同,覆盖安装目录下的amtlib.dll文件即可.(文 ...

  4. 2007: [Noi2010]海拔 - BZOJ

    Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)× ...

  5. VIM配置自动提示功能

        问题描述:                  使用VIM作为Linux下的IDE,但是VIM默认情况下不支持自动代码提示功能,因此希望安装插件实现自动提示功能,目前找到的自动提示工具,非常好用 ...

  6. 精通ASP.Net MVC 3 框架(第三版)学习笔记

    精通ASP.Net MVC 3 框架(第三版)学习笔记 代码才是王道. http://pan.baidu.com/s/1pJyL1cn

  7. EasyTouch 3.1中文翻译

    Unity3D的Easy Touch 的手册最近寻找中文版本,google无果,自己动手.目前暂时只有c# ,javascript原理是一样的. 一.Quick Start 1-Import Easy ...

  8. centos telnet --xinetd 服务

    telnet由于是明文传输,所以安全起见最好不要用telnet服务.但是由于telnet是一个比较方便的远程工具,在windows上是自带 的不需要安装客户端即可使用.如果telnet设置的比较复杂, ...

  9. POJ 1775

    #include <iostream> using namespace std; ,,,,,,,,,}; bool boo; void DFS(int time,int sum); int ...

  10. mybatis 插入日期类型精确到秒的有关问题

    mybatis 插入日期类型精确到秒的问题 Mybatis 插入 数据库是为了防止插入空时报错, Mybatis 提供了一套机制,只要给定插入的字段的类型,如果为空,则它会自动处理为相应类型的默认值: ...