【题目描述】
给出两个正整数 A,B,求它们的最大公约数。
【输入】
输入共两行,第一行一个正整数 A,第二行一个正整数 B。
【输出】
在第一行输出一个整数,表示 A,B 的最大公约数。
【输入样例】
18
24
【输出样例】
6
【提示】
数据范围与提示:
对于 60% 的数据,1≤A,B≤1018;
对于 100% 的数据,1≤A,B≤103000 。
首先看到这道题的数据范围之后,我们肯定是得用高精度呐,然后为了方便一点,缩小数组大小,我们还可以引进“压位高精度”,一般来说,最好使用四位压一位,用五位的话容易爆掉...
--->关于“压位高精”,可以去看看这位大佬的博客,感jio讲的很清楚
进入正题,此题要求两个高精的“最大公约数”,那我们肯定会想到用“二进制算法”呐,
--->关于“二进制算法”,可以去看看我的另一篇博客(应该在最后面有讲到),也称“更相减损术”啦
那我直接上代码吧(反正是一道模板题...
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e6+5,inf=1<<29,base=10000;//10000而不是100000,不然容易爆掉! 4 int T; 5 int a[1000],b[1000],c[1000],f[1000]; 6 int read() 7 { 8 int f=1;char ch; 9 while((ch=getchar())<'0'||ch>'9') 10 if(ch==