1 // luogu-judger-enable-o2 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 typedef double db; 6 #define INF 0x3f3f3f3f 7 #define _for(i,a,b) for(int i = (a);i < b;i ++) 8 #define _rep(i,a,b) for(int i = (a);i > b;i --) 9 10 #define MAXL 10000 11 typedef long long ll; 12 const int bit=100000000; 13 struct bign 14 { 15 int s[MAXL],len; 16 bign() 17 { 18 memset(s,0,sizeof s); 19 len=0; 20 } 21 void clean() 22 { 23 while(len>1&&!s[len-1]) len--; 24 } 25 void read() 26 { 27 char num[MAXL]; 28 scanf("%s",num); 29 *this=num; 30 } 31 void print() 32 { 33 printf("%d",s[len-1]); 34 for(int i=len-2; i>=0; i--) 35 printf("%08d",s[i]); 36 putchar(10); 37 } 38 bign operator=(const int &num) 39 { 40 int tmp=num; 41 len=0; 42 while(tmp) 43 { 44 s[len++]=tmp%bit; 45 tmp/=bit; 46 } 47 return *this; 48 } 49 bign operator=(const char *num) 50 { 51 int up=strlen(num),g=1; 52 len=0; 53 for(int i=up-1; i>=0; i--) 54 { 55 s[len]+=(num[i]-'0')*g; 56 if(g==bit/10) len++; 57 g=((g!=bit/10)?g*10:1); 58 } 59 len++; 60 clean(); 61 return *this; 62 } 63 bign operator-(const bign &b)const 64 { 65 bign c; 66 bool g=0; 67 for(int i=0; i<len; i++) 68 { 69 int x=s[i]-g; 70 if(i<b.len) x-=b.s[i]; 71 if(x>=0) g=0; 72 else x+=bit,g=1; 73 c.s[c.len++]=x; 74 } 75 c.clean(); 76 return c; 77 } 78 79 bool operator<(const bign &b)const 80 { 81 if(len!=b.len) return len<b.len; 82 for(int i=len-1; i>=0; i--) 83 if(s[i]!=b.s[i]) return s[i]<b.s[i]; 84 return false; 85 } 86 bool operator>(const bign &b)const 87 { 88 if(len!=b.len) return len>b.len; 89 for(int i=len-1; i>=0; i--) 90 if(s[i]!=b.s[i]) return s[i]>b.s[i]; 91 return false; 92 } 93 bool operator==(const bign &b)const 94 { 95 // if(len!=b.len) return false; 96 for(int i=0; i<len; i++) 97 if(s[i]!=b.s[i]) return false; 98 return true; 99 } 100 }; 101 bign gcd(bign a,bign b) 102 { 103 while(!(a==b)) 104 { 105 if(a>b) 106 a = a-b; 107 else 108 b = b-a; 109 } 110 return a; 111 } 112 int main() 113 { 114 bign a; 115 a.read(); 116 bign b; 117 b.read(); 118 bign c; 119 c = gcd(a,b); 120 c.print(); 121 return 0; 122 }