• P2152-[SDOI2009]SuperGCD


      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 }
  • 相关阅读:
    Mac OSX下增加TCP连接数
    Connection reset by peer的常见原因及解决办法
    修改主机名
    docker 查看 docker容器启动 完整命令
    nginx 日志打印响应时间 request_time 和 upstream_response_time
    Ubuntu16.04 安装 Docker
    VictoriaMetrics vmagent 使用
    VictoriaMetrics vmauth 使用
    VictoriaMetrics集群模式的一些说明
    promgen prometheus 配置文件生成工具
  • 原文地址:https://www.cnblogs.com/Asurudo/p/11452725.html
Copyright © 2020-2023  润新知