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

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

bzoj 1876: [SDOI2009]SuperGCD (高精度+gcd)

2019-11-08 03:21:23
字體:
來源:轉載
供稿:網友

1876: [SDOI2009]SuperGCD

Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3251  Solved: 1122[Submit][Status][Discuss]

Description

Sheng bill有著驚人的心算能力,甚至能用大腦計算出兩個巨大的數的GCD(最大公約 數)!因此他經常和別人比賽計算GCD。有一天Sheng bill很囂張地找到了你,并要求和你比 賽,但是輸給Sheng bill豈不是很丟臉!所以你決定寫一個程序來教訓他。

Input

共兩行: 第一行:一個數A。 第二行:一個數B。

Output

一行,表示A和B的最大公約數。

Sample Input

1254

Sample Output

6

HINT

對于20%的數據,0 < A , B ≤ 10 ^ 18。對于100%的數據,0 < A , B ≤ 10 ^ 10000。

Source

Day1

[Submit][Status][Discuss]

題解:高精度+gcd

剛開始寫的方法TLE了,所以照著網上的姿勢寫的。。。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define N 100006#define inf 100000000#define mx 1252using namespace std;char s[N],s1[N];struct data{	int len,s[mx+10];	data() {		memset(s,0,sizeof(s));	}	int &Operator [](int i) {		return s[i];	}	void operator /=(int x){		for (int i=mx;i>=1;i--) 		 s[i-1]+=s[i]%x*inf,s[i]/=x;	}	void operator -=(data &b) {		for (int i=1;i<mx;i++) 		s[i]=s[i]-b[i]+(s[i-1]+inf)/inf-1,s[i-1]=(s[i-1]+inf)%inf;	}	data operator *=(int x){		for (int i=1;i<mx;i++) 		s[i]=s[i]*x+s[i-1]/inf,s[i-1]%=inf;	}	bool operator > (data &b) {		for (int i=mx;i>=1;i--) 			if (b[i]!=s[i]) return s[i]>b[i];		return 0;	}	void PRint() {		int p=mx;		while (!s[p]&&p>0) p--;		printf("%d",s[p--]);		while (p) printf("%08d",s[p--]);		putchar('/n');	}	bool iszero() {		for (int i=1;i<mx;i++)		 if (s[i]!=0) return 0;		return 1;	}	void read() {         char tp[10010]={'0','0','0','0','0','0','0','0'};         		 scanf("%s",tp+8);         int L=strlen(tp+1),p=1;         while(L-8*p+1>0)             		  sscanf(tp+L-8*p+++1,"%08d",&s[p]);    }}a1,b1;data gcd(data a,data b){     int g=0; bool x,y;	while (!a.iszero()&&!b.iszero()) {		x=!(a[1]&1); y=!(b[1]&1);		if (x&&y) g++,a/=2,b/=2;		else if (x||y) {			if (x) a/=2; 			if (y) b/=2;		}		else {			if (a>b) a-=b;			else b-=a;		}	}	if (b>a) a=b;	for (int i=0;i<g;i++) a*=2;	a.print();}int main(){	freopen("a.in","r",stdin);	freopen("my.out","w",stdout);	a1.read(); b1.read();	gcd(a1,b1);}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江山市| 中西区| 板桥市| 清徐县| 封丘县| 徐汇区| 陵川县| 仲巴县| 女性| 若尔盖县| 江山市| 墨玉县| 奉贤区| 福清市| 沙雅县| 武冈市| 鹤峰县| 璧山县| 定远县| 肥乡县| 湟中县| 平度市| 敦化市| 新晃| 平果县| 嘉鱼县| 大名县| 澳门| 安福县| 民勤县| 滨海县| 大厂| 深水埗区| 五台县| 望谟县| 湘阴县| 房产| 广丰县| 泸定县| 买车| 南投县|