国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

bzoj1876: [SDOI2009]SuperGCD

2019-11-06 06:17:49
字體:
來源:轉載
供稿:網友

傳送門 哈,不用高精度的做法應該都會吧、 可是要高精度。 于是我們可以將A%B化為A-B^x-…… x為2的冪次。 這樣用輾轉相除法求出gcd

#include<cstring> #include<cmath> #include<cstdio> #include<iostream> #include<cstdlib> #include<algorithm>#define ll long long#define mo 1000000000using namespace std;struct bignum{ ll a[1200]; bool Operator <= (bignum x){ if (a[0]!=x.a[0]) return a[0]<x.a[0]; for (int i=a[0];i>=1;i--) if (a[i]!=x.a[i]) return a[i]<x.a[i]; return 1; } void operator *= (ll x){ for (int i=1;i<=a[0];i++) a[i]*=x; for (int i=1;i<=a[0];i++){ a[i+1]+=a[i]/mo; a[i]%=mo; } if (a[a[0]+1]) a[0]++; } void operator /= (ll x){ ll y=0; for (int i=a[0];i>=1;i--){ y=y*mo+a[i]; a[i]=y/x; y%=x; } if (!a[a[0]]) a[0]--; } void operator -= (bignum x){ for (int i=1;i<=a[0];i++) a[i]-=x.a[i]; for (int i=1;i<=a[0];i++) if (a[i]<0) a[i]+=mo,a[i+1]--; while (!a[a[0]]&&a[0]) a[0]--; } void yw(char *b){ ll x=0; int len=strlen(b); for (int i=len;i>0;i--){ if (i%9==0){a[i/9+1]=x; x=0;} x=x*10+b[len-i]-48; } a[1]=x; a[0]=(len-1)/9+1; } void PRint(){ printf("%d",a[a[0]]); for (int i=a[0]-1;i>=1;i--) printf("%09d",a[i]); printf("/n"); }}c,d;int j=0;char a[10005],b[10005];int main(){ scanf("%s%s",&a,&b); c.yw(a); d.yw(b); if (c<=d) swap(c,d); while (d.a[0]!=0){ while (!(d.a[1]&1)&&!(c.a[1]&1)) d/=2,c/=2,j++; while (!(d.a[1]&1)) d/=2; while (!(c.a[1]&1)) c/=2; if (c<=d) swap(c,d); c-=d; if (c<=d) swap(c,d); } for (;j>0;j--) c*=2; c.print(); return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广宗县| 崇礼县| 呼玛县| 东山县| 香港 | 右玉县| 荣昌县| 香河县| 政和县| 逊克县| 孙吴县| 武川县| 黑龙江省| 普陀区| 开远市| 建始县| 竹山县| 乾安县| 雅江县| 瑞安市| 上林县| 曲水县| 大洼县| 建德市| 宿迁市| 塔河县| 邻水| 扶绥县| 牙克石市| 分宜县| 东宁县| 肇源县| 阜新市| 呼图壁县| 大田县| 辽源市| 阿拉善左旗| 安泽县| 乐至县| 山东省| 博罗县|