#include<iostream>
#include<cstdio>
#include<cstring>
#define inf 1000000000
using namespace std;
char ch1[],ch2[];
int la,lb,cnt;
struct data{int a[],l;}a,b;
bool com()
{
if(a.l<b.l)return ;
if(a.l>b.l)return ;
for(int i=a.l;i>;--i)
if(a.a[i]>b.a[i])return ;
else if(a.a[i]<b.a[i])return ;
return ;
}
void print(data a)
{
while(a.a[a.l]==)a.l--;
for(int i=a.l;i>;--i)
if(i==a.l)printf("%d",a.a[i]);
else printf("%09d",a.a[i]);
}
inline data sub(data a,data b)
{
int k;
data c;
for(int i=;i<=;++i)
{
if(i<=b.l)c.a[i]=a.a[i]-b.a[i];
else if(i<=a.l)c.a[i]=a.a[i];
else c.a[i]=;
if(c.a[i]<)
{
c.a[i]+=inf;
a.a[i+]--;
}
}
c.l=a.l;
while(c.a[c.l]==&&c.l)c.l--;
return c;
}
void diva()
{
for(int i=;i<=a.l;i++)
{
if(a.a[i]&)a.a[i-]+=inf/;
a.a[i]>>=;
}
if(!a.a[a.l])a.l--;
}
void divb()
{
for(int i=;i<=b.l;i++)
{
if(b.a[i]&)b.a[i-]+=inf/;
b.a[i]>>=;
}
if(!b.a[b.l])b.l--;
}
void mul()
{
for(int i=a.l;i>;i--)
{
a.a[i]<<=;
a.a[i+]+=a.a[i]/inf;
a.a[i]%=inf;
}
while(a.a[a.l]>)a.l++;
for(int i=b.l;i>;i--)
{
b.a[i]<<=;
b.a[i+]+=b.a[i]/inf;
b.a[i]%=inf;
}
while(b.a[b.l]>)b.l++;
}
int main()
{
scanf("%s%s",ch1+,ch2+);
la=strlen(ch1+);lb=strlen(ch2+);
if(la%)a.l=la/+;
else a.l=la/;
if(lb%)b.l=lb/+;
else b.l=lb/;
for(int i=;i<=a.l;++i)
{
int k1=max(,la-i*+),k2=la-(i-)*;
for(int j=k1;j<=k2;++j)
a.a[i]=a.a[i]*+ch1[j]-'';
}
for(int i=;i<=b.l;++i)
{
int k1=max(,lb-i*+),k2=lb-(i-)*;
for(int j=k1;j<=k2;++j)
b.a[i]=b.a[i]*+ch2[j]-'';
}
while()
{
if((a.a[]%==)&&(b.a[]%==)){diva();divb();cnt++;}
else if((a.a[]%==))diva();
else if((b.a[]%==))divb();
if(com()){a=sub(a,b);if(!a.l){while(cnt--)mul();print(b);break;}}
else {b=sub(b,a);if(!b.l){while(cnt--)mul();print(a);break;}}
}
return ;
}

高精度gcd的更多相关文章

  1. 浅谈Stein算法求最大公约数(GCD)的原理及简单应用

    一.Stein算法过程及其简单证明 1.一般步骤: s1:当两数均为偶数时将其同时除以2至至少一数为奇数为止,记录除掉的所有公因数2的乘积k: s2:如果仍有一数为偶数,连续除以2直至该数为奇数为止: ...

  2. 高精度&&FFT

    ACM-高精度模板(综合篇) 时间:-- :: 阅读: 评论: 收藏: [点我收藏+] 标签:高精度 在这里,我们约定,能用int表示的数据视为单精度,否则为高精度.所有函数的设计均采用带返回值的形式 ...

  3. SDOI2009

    1226: [SDOI2009]学校食堂Dining Description 小F 的学校在城市的一个偏僻角落,所有学生都只好在学校吃饭.学校有一个食堂,虽然简陋,但食堂大厨总能做出让同学们满意的菜肴 ...

  4. 【BZOJ】【1876】【SDOI2009】SuperGCD

    高精度+GCD 唔……高精gcd其实可以这么算: \[ GCD(a,b)= \begin{cases} a & b=0 \\ 2*GCD(\frac{a}{2},\frac{b}{2}) &a ...

  5. Bzoj1498&1416: [NOI2006]神奇的口袋

    什么鬼双倍经验题??? Sol 考虑在第\(k\)次摸到\(y\)的概率 如果上次摸到\(y\),目前有\(sum\)个球,\(y\)有\(a[y]\)个,那么概率就是\(\frac{a[y]+d}{ ...

  6. ACM数学

     1.burnside定理,polya计数法 这个专题我单独写了个小结,大家可以简单参考一下:polya 计数法,burnside定理小结 2.置换,置换的运算 置换的概念还是比较好理解的,< ...

  7. exam9.6&&7

    emmm 改题稍紧张,以后几篇并一起写 9.6 (前十并没有参加本次考试) 于是我就rank8了 一道题一道题来 先说T1: 显然是一个高精度GCD,于是打算用计算器算一下时间复杂度 众所周知gcd是 ...

  8. HZOI20190906模拟38 金,斯诺,赤

    题面:https://www.cnblogs.com/Juve/articles/11479415.html T1:高精度gcd,其实不用写高精度取模,gcd还有一种求法 int gcd(int a, ...

  9. JZOJPJ-C 8/21题解

    原题大战D1 吐槽: T1 \(O(N^2)\; N \leq 26\) N大时还要写高精, 可以增加难度 T2 不给范围 T3 居然没有完全卡掉 不对应该赞美出题人 T4 PJ考个四边形不等式?? ...

随机推荐

  1. ES6复制拷贝数组,对象,json数组

    扩展运算符的应用spread打散数组[...] (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; ...

  2. HC595驱动数码管

    74HC595是一个8位串行输入.并行输出的位移缓存器 引脚定义 Q0~Q7:并行输出 Q7':串行输出 SH_CP:移位寄存器时钟输入 ST_CP:存储寄存器时钟输入 DS:串行输入 原理图 举例 ...

  3. 第三方库Mantle的简单实用

    1. 测试时, 可以使用下面这个网址及代码来测试, 里面有模型,数组,以及字典, 还可以有long long 转NSDate,  string 转 int等. NSURL *url = [NSURLU ...

  4. 基于file上传文件的并发上传(多个文件一起上传到后台并把数据存储的同一条数据中,如 数据库字段videopath,imge。前台发送来的文件file1,file2。 videopath=file1,imge=file2)

    前台代码: <div class="tab-content"> <dl> <dt>所属栏目</dt> <dd> < ...

  5. hadoop 自定义OutputFormat

    1.继承FileOutputFormat,复写getRecordWriter方法 /** * @Description:自定义outputFormat,输出数据到不同的文件 */ public cla ...

  6. ABP进阶教程0 - 目录

    ABP进阶教程 本教程主要讲解如何基于ABP实现条件查询/分页/排序/导出/打印等功能. 源码已分享:   GitHub   Gitee ABP进阶教程0 - 目录 ABP进阶教程1 - 条件查询 A ...

  7. momentjs在vue中的用法

    js代码 import moment from 'moment'; const jsCountDown = document.getElementById('js-countdown'); const ...

  8. 5. Go语言—数据类型

    一.变量作用域 在函数内部声明的变量叫做局部变量,声明周期仅限于函数内部. 在函数外部声明的变量叫做全局变量,声明周期作用于整个包,如果是大写的,则作用于整个程序. 二.类型 1. 类型转换 ​ ty ...

  9. Pwnable-blukat

    ssh blukat@pwnable.kr -p2222 (pw: guest) 连接上去看看c的源码 #include <stdio.h> #include <string.h&g ...

  10. [C8] 聚类(Clustering)

    聚类(Clustering) 非监督学习:简介(Unsupervised Learning: Introduction) 本章节介绍聚类算法,这是我们学习的第一个非监督学习算法--学习无标签数据,而不 ...