题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1876 分析: 以为辗转相减会TLE呢……但是好像没这个数据……就这么水过去了…… 辗转相减求a,b的gcd其实可以优化的: 1.若a为偶数,b为奇数:gcd(a,b)=gcd(a/2,b) 2.若a为奇数,b为偶数:gcd(a,b)=gcd(a,b/2) 3.若a,b都是偶数:gcd(a,b)=2*gcd(a/2,b/2) 3.若a,b都是奇数:gcd(a,b)=gcd(a-b,b)…
1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 2384  Solved: 806[Submit][Status][Discuss] Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一个…
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1876 一道简单的高精度+Stein算法(或者叫辗转相除法)求最大公约数板子题. md还要压位.. 代码: #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<ctime> #include<iostream> #incl…
http://www.lydsy.com/JudgeOnline/problem.php?id=1876 Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比 赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你 决定写一个程序来教训他. Input 共两行: 第一行:一个数A. 第二行:一个数B. 0 < A , B ≤ 10 ^ 100…
这道题直接写了我两个多小时-- 主要是写高精度的时候还存在着一些小毛病,调了很久 在输入这一块卡了很久. 然后注意这里用while的形式写,不然会炸 最后即使我已经是用的万进制了,但是交上去还是有两个点超时 然后就开始漫长的改进,一直过不了那两个点. 然后突然发现,貌似这道题没有涉及到乘法. 那不就可以直接开10的九次方为一位了(10的9次方是int的最大数量级) 我交上去之后就AC了,全部测试点交上去总和4.6秒 然后原来我一个数开的是2500这么大,因为题目给的10000位,之前用万进制除以…
更相减损数. 上手就debug了3个小时,直接给我看哭了. 3个函数都写错了是什么感受? 乘2函数要从前往后乘,这样后面的数乘2进位以后不会干扰前面的数. 除2函数要从后往前除,这样前面的数借来的位不会除2次. 然后函数里面俩个类里面的变量名不要打混. 哭瞎 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; + ; ,,,,,,,}; ]; int cnt; struc…
http://www.lydsy.com/JudgeOnline/problem.php?id=1876 高精压位GCD 对于  GCD(a, b)  a>b 若 a 为奇数,b 为偶数,GCD(a, b) = GCD(a, b / 2) 若 a 为偶数,b 为奇数,GCD(a, b) = GCD(a / 2, b) 若 a 为偶数,b 为偶数,GCD(a, b) = 2*GCD(a / 2, b / 2) 若 a 为奇数,b 为奇数,GCD(a, b) = GCD(a - b, b) vect…
题目 Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比 赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你 决定写一个程序来教训他. 输入格式 共两行: 第一行:一个数A. 第二行:一个数B. 0 < A , B ≤ 10 ^ 10000. 输出格式 一行,表示A和B的最大公约数. 输入样例 12 54 输出样例 6 题解 时隔大半年,我回来A这道题啦[当初…
[BZOJ1876][SDOI2009]SuperGCD(数论,高精度) 题面 BZOJ 洛谷 题解 那些说数论只会\(gcd\)的人呢?我现在连\(gcd\)都不会,谁来教教我啊? 显然\(gcd\)除了辗转相除之外还可以辗转相减,然而辗转相减对于这题而言显然还不够优秀. 我们这样子来做. 如果当前\(a,b\)都是\(2\)的倍数,那么我们就把\(2\)直接同时除掉,直接在\(gcd\)中乘上一个\(2\).否则如果只有一个数是\(2\)的倍数,显然可以直接把这个\(2\)给除掉. 这样子可…
更相减损,要用高精度.... --------------------------------------------------------------- #include<cstdio> #include<cstring> #include<cctype> #include<algorithm>   using namespace std;   const int maxn = 10009;   char S[maxn]; int Power[maxn]…