luogu2152 [SDOI2009]SuperGCD】的更多相关文章

要你求两个非常大的数字的GCD. 不要想复杂,用高精度整更相减损术即可. #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct BigInt { static const int BASE = 10000, CARRY = 4, MAX_N = 10000; int A[MAX_N], Len; void Clear() { memset(A, 0, s…
1876: [SDOI2009]SuperGCD Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3060  Solved: 1036[Submit][Status][Discuss] Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD.有一天Sheng bill很嚣张地找到了你,并要求和你比 赛,但是输给Sheng bill岂不是很丢脸!所以你决定写一…
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岂不是很丢脸!所以你决定写一个…
更相减损,要用高精度.... --------------------------------------------------------------- #include<cstdio> #include<cstring> #include<cctype> #include<algorithm>   using namespace std;   const int maxn = 10009;   char S[maxn]; int Power[maxn]…
[BZOJ1876][SDOI2009]SuperGCD(数论,高精度) 题面 BZOJ 洛谷 题解 那些说数论只会\(gcd\)的人呢?我现在连\(gcd\)都不会,谁来教教我啊? 显然\(gcd\)除了辗转相除之外还可以辗转相减,然而辗转相减对于这题而言显然还不够优秀. 我们这样子来做. 如果当前\(a,b\)都是\(2\)的倍数,那么我们就把\(2\)直接同时除掉,直接在\(gcd\)中乘上一个\(2\).否则如果只有一个数是\(2\)的倍数,显然可以直接把这个\(2\)给除掉. 这样子可…
题目: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)…
更相减损数. 上手就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…
题目链接 这题.高精度.恶心.难受. 那么高精度的gcd怎么做呢? 若a=b gcd(a,b)=a ①a偶b偶 gcd(a,b)=2*gcd(a/2,b/2) ②a偶b奇 gcd(a,b)=gcd(a/2,b) ③a奇b奇 gcd(a,b)=gcd(a-b,b) 嗯.这玩意就这样了. #include<cmath> #include<iostream> #include<cstdio> #include<algorithm> #include<cstr…
辗转相减求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) (a>b) 然后就涉及到高精度乘单精度,高精度减高精度,高精度除单精度………