更相减损数。

上手就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. (转)使用 /proc 文件系统来访问 Linux 内核的内容

    转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...

  2. webview加载本地html

    //webView.loadUrl("file:///android_asset/index.html"); 加载assets目录中含有的index.html  webView.l ...

  3. 如何用 ANTLR 4 实现自己的脚本语言?

    ANTLR 是一个 Java 实现的词法/语法分析生成程序,目前最新版本为 4.5.2,支持 Java,C#,JavaScript 等语言,这里我们用 ANTLR 4.5.2 来实现一个自己的脚本语言 ...

  4. Amazon 面经

    [版面:待字闺中][首篇作者:gmadj] , 2013年09月29日21:51:33 [首页] [上页][下页][末页] [分页:1 2 ] gmadj 进入未名形象秀 我的博客     [回复] ...

  5. Javascript 中childNodes和children的区别

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. 使用 Storyboard Segue 实作 UIViewController 的切换

    http://blog.csdn.net/mazhen1986/article/details/7791430 Storyboard 是在 iOS 5 SDK 中才出现的新名词,它其实就是原本的 Xi ...

  7. ZOJ 3757 Alice and Bob and Cue Sports(模拟)

    题目链接 题意 : 玩台球.Alice 和 Bob,一共可以进行m次,Alice 先打.有一个白球和n个标有不同标号的球,称目标球为当前在桌子上的除了白球以外的数值最小的球,默认白球的标号为0.如果白 ...

  8. SDUT1466双向队列

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1466&cid=1182 题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列 ...

  9. IE插件DebugBar如何安装及使用

    DebugBar插件是一款功能很强大的IE插件,用户可以从各个不同的角度剖析Web页面内部,包括页面 详细代码.CSS样式表.所有链接.所有图片代码.脚本信息等等,不管你是编程大虾还是IT新人都和适合 ...

  10. hdu2010

    //很闲,刷水..... http://acm.hdu.edu.cn/showproblem.php?pid=2010 #include<iostream> #include<std ...