昨晚的模拟赛很好啊

T1:Super GCD

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 struct bignum{
 8     int a[205],len;
 9     bignum(){
10         memset(a,0,sizeof a);
11         len=0;
12     }
13     bignum(int x){
14         memset(a,0,sizeof a);len=0;
15         while(x){
16             a[++len]=x%10;
17             x/=10;
18         }
19     }
20     void div(){
21         for(int i=len;i;i--){
22             if((i>1)&&(a[i]&1))a[i-1]+=10;
23             a[i]>>=1;
24         }
25         while(len>1&&!a[len])len--;
26     }
27     bignum operator - (bignum b){
28         bignum c;
29         c.len=max(len,b.len);
30         for(int i=1;i<=c.len;i++){
31             c.a[i]+=a[i]-b.a[i];
32             if(c.a[i]<0){
33                 c.a[i]+=10;
34                 a[i+1]--;
35             }
36         }
37         while(c.a[c.len+1])c.len++;
38         while(c.len>1&&!c.a[c.len])c.len--;
39         return c;
40     }
41     bool operator < (const bignum & b)const{
42         if(b.len>len)return 1;
43         for(int i=len;i;i--){
44             if(b.a[i]>a[i])return 1;
45             if(b.a[i]<a[i])return 0;
46         }
47         return 0;
48     }
49 }A,B,C,tmpl,tmpr,tmpm,one;
50 int T,la,lb;
51 char sa[205],sb[205];
52 int main(){
53     scanf("%d",&T);
54     one=1;
55     while(T--){
56         scanf("%s%s",sa+1,sb+1);
57         la=strlen(sa+1);lb=strlen(sb+1);
58         memset(A.a,0,sizeof A.a);
59         memset(B.a,0,sizeof B.a);
60         A.len=la;B.len=lb;
61         for(int i=1;i<=la;i++)A.a[la-i+1]=sa[i]-'0';
62         for(int i=1;i<=lb;i++)B.a[lb-i+1]=sb[i]-'0';
63         if(A.a[1]%2==0&&B.a[1]%2==0){puts("No");continue;}
64         while(A.a[1]%2==0)A.div();
65         while(B.a[1]%2==0)B.div();
66         while(1){
67             if(A<B){C=A;A=B;B=C;}
68             if(B.len==1&&B.a[1]==0)break;
69             A=A-B;
70             while((A.len!=1||A.a[1]!=0)&&A.a[1]%2==0)A.div();
71         }
72         if(A.len==1&&A.a[1]==1)puts("Yes");
73         else puts("No");
74     }
75     return 0;
76 }
king

相关文章:

  • 2021-06-21
  • 2021-05-19
  • 2021-10-17
  • 2022-12-23
  • 2021-10-08
  • 2021-08-09
  • 2020-11-04
  • 2018-10-28
猜你喜欢
  • 2021-11-16
  • 2021-07-12
  • 2021-10-13
  • 2021-12-25
  • 2021-07-21
  • 2021-05-11
相关资源
相似解决方案