Description

Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD。有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一个程序来教训他。

Input

共两行: 第一行:一个数A。 第二行:一个数B。0<A,B≤1010000

Output

一行,表示A和B的最大公约数。 

Stein算法+高精度压位

首先不断约去A,B的公因数2直至A或B为奇数,记录约去2的次数k。

循环执行:{

 若A或B为偶数则不断约去2

 若A<B则交换A,B

 A-=B

 若A=0则输出B*2k,算法结束

}

#include<cstdio>
#include<cstring>
#define B 1000000000
const int B9=B-;
char s[];
struct num{
int a[];
int l;
num(){l=;}
inline void div2(){
for(int i=l;i>;i--){
if(a[i]&)a[i-]+=B;
a[i]>>=;
}
a[]>>=;
while(l&&!a[l])--l;
}
inline void mut2(){
for(int i=;i<=l;i++)a[i]<<=;
for(int i=;i<=l;i++)a[i+]+=a[i]/B,a[i]%=B;
if(a[l+])l++;
}
void print(){
printf("%d",a[l]);
for(int i=l-;i>=;i--)printf("%09d",a[i]);
}
}a1,b1;
inline bool operator<(num&a,num&b){
for(int i=a.l<b.l?b.l:a.l;i>=;i--){
if(a.a[i]<b.a[i])return true;
if(a.a[i]>b.a[i])return false;
}
return false;
}
inline bool operator-=(num&a,num&b){
a.a[]+=;
for(int i=a.l;i>=;i--)a.a[i]+=B9-b.a[i];
for(int i=;i<a.l;i++)a.a[i+]+=a.a[i]/B,a.a[i]%=B;
a.a[a.l]%=B;
while(a.l&&!a.a[a.l])--a.l;
}
num*a=&a1,*b=&b1,*c;
int t2=,l;
int p10[]={,,,,,,,,};
int main(){
scanf("%s",s);
l=strlen(s)-;
for(int i=;i<=l;i++)a->a[(l-i)/]+=p10[(l-i)%]*(s[i]-'');
a->l=l/;
if(a->a[a->l+])a->l++;
scanf("%s",s);
l=strlen(s)-;
for(int i=;i<=l;i++)b->a[(l-i)/]+=p10[(l-i)%]*(s[i]-'');
b->l=l/;
if(b->a[b->l+])b->l++;
while(!(a->a[]&)&&!(b->a[]&)){
t2++;
a->div2();
b->div2();
}
do{
while(!(a->a[]&))a->div2();
while(!(b->a[]&))b->div2();
if(*a<*b)c=a,a=b,b=c;
*a-=*b;
}while(a->l!=||a->a[]!=);
while(t2--)b->mut2();
b->print();
return ;
}

bzoj1876 SuperGCD的更多相关文章

  1. BZOJ-1876 SuperGCD Python(欧几里德算法)

    第一次感觉Python艹题的快感 1876: [SDOI2009]SuperGCD Time Limit: 4 Sec Memory Limit: 64 MB Submit: 2461 Solved: ...

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

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

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

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

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

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

  5. bzoj1876: [SDOI2009]SuperGCD

    更相减损数. 上手就debug了3个小时,直接给我看哭了. 3个函数都写错了是什么感受? 乘2函数要从前往后乘,这样后面的数乘2进位以后不会干扰前面的数. 除2函数要从后往前除,这样前面的数借来的位不 ...

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

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

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

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

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

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

  9. BZOJ 1876: [SDOI2009]SuperGCD

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

随机推荐

  1. String对象中的正则表达式

    (1)身份证号码验证身份证号码是18位数字,根据GB11643-1999<公民身份证>定义制作:由17位本体码和一位校验码组成.身份证号码前6位是地址码,按(GB/T2260)规定执行.接 ...

  2. 全球信息安全会议 Top 50

    信息安全会议在世界范围内举办,下面是全球最值得参加的50个信息安全会议的简介,以时间顺序列出.需要注意的是,这份清单基于2016年的信息撰写,因为具体日期与地点每年或有不同,请至活动官网确认具体的日期 ...

  3. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

  4. Python 爬虫常用库(九)

  5. Linux:查看进程运行时间

    查看进程运行时间 应用ps命令,加选项-Ao,加参数,最后过滤. ps -Ao pid,tty,user,stime,etime,comm,args| grep firefox pid:进程ID tt ...

  6. ACCESS表的视图

    ACCESS表的视图 点击:   发布日期:2007-8-31 6:37:00   进入论坛     表是关系型数据库的基本结构.在Access中,表是一种关系特定主题的数据集合,如产品.供应商等.为 ...

  7. jeecms系统使用介绍——通过二次开发实现对word、pdf、txt等上传附件的全文检索

    转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/76912307 本文出自[我是干勾鱼的博客] 之前在文章<基于Java的门户 ...

  8. Dlib与OpenCV图片转换

    re: 1. https://zhuanlan.zhihu.com/p/36489663 2. https://stackoverflow.com/questions/38180410/convert ...

  9. UVA 156:Ananagrams (vector+map+sort)

    题意:一大堆单词中间有空格隔开,以'#'结束输出,问只出现一次的的单词有哪些(如果两个具有相同的长度,相同的字母也算是相同的,不区分大小写,如:noel和lone属于一个单词出现两次).最后按照字典序 ...

  10. Alternative Thinking 找规律

    Kevin has just recevied his disappointing results on the USA Identification of Cows Olympiad (USAICO ...