比赛记录:

1006因为智商不够卡了一年

1010lfw开场就看了这题,发现是水题,然后一直没写,最后30分钟开始写,一开始还没想清楚WA了一发,想清楚的时候已经4点52了,就不知道怎么改了

赛后发现1010 是全场最水的题,血亏,以后要是要多看看后面的题可不可做,可能是榜被带歪了。

题解:

1001 A + B = C

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int size=1e5+5;
 4 char a[size],b[size],c[size];
 5 int d[size];
 6 int main()
 7 {
 8     int t;
 9     scanf("%d",&t);
10     while(t--)
11     {
12         scanf("%s%s%s",a+1,b+1,c+1);
13         int lena=strlen(a+1),lenb=strlen(b+1),lenc=strlen(c+1);
14         int za=0,zb=0,zc=0;
15         while(a[lena]=='0') lena--,za++;
16         while(b[lenb]=='0') lenb--,zb++;
17         while(c[lenc]=='0') lenc--,zc++;
18         int lenaa=lena,lenbb=lenb,lencc=lenc;
19         bool flag=0;
20         int tmp;
21         a[0]='0',b[0]='0';
22         if(a[lena]==c[lenc])
23         {
24             flag=0;
25             while(a[lena]==c[lenc]&&lena>=0&&lenc>=1) {if(lena!=0) lena--;lenc--;}tmp=lenc;
26             while(((a[lena]-'0'+b[lenb]-'0'+flag)%10==c[lenc]-'0')&&lena>=0&&lenb>=0&&lenc>=1)
27             {
28                 flag=(a[lena]-'0'+b[lenb]-'0'+flag)/10;
29                 lenc--;
30                 if(lena!=0) lena--;
31                 if(lenb!=0) lenb--;
32             }
33             int lenmx=max({za,zb,zc});
34             if(lena==lenb&&lenb==lenc&&lenc==0)
35             {
36                 printf("%d %d %d\n",lenmx-za,lenmx-zb+lencc-tmp,lenmx-zc);
37                 continue;
38             }
39         }
40         lena=lenaa,lenb=lenbb,lenc=lencc;
41         if(b[lenb]==c[lenc])
42         {
43             flag=0;
44             while(b[lenb]==c[lenc]&&lenb>=0&&lenc>=1) {if(lenb!=0) lenb--;lenc--;}tmp=lenc;
45             while(((a[lena]-'0'+b[lenb]-'0'+flag)%10==c[lenc]-'0')&&lena>=0&&lenb>=0&&lenc>=1)
46             {
47                 flag=(a[lena]-'0'+b[lenb]-'0'+flag)/10;
48                 lenc--;
49                 if(lena!=0) lena--;
50                 if(lenb!=0) lenb--;
51             }
52             int lenmx=max({za,zb,zc});
53             if(lena==lenb&&lenb==lenc&&lenc==0)
54             {
55                 printf("%d %d %d\n",lenmx-za+lencc-tmp,lenmx-zb,lenmx-zc);
56                 continue;
57             }
58         }
59         lena=lenaa,lenb=lenbb,lenc=lencc;
60         int lend=max(lenb,lena);
61         flag=0;
62         for(int i=lend;i>=0;i--)
63         {
64             int an,bn;
65             an=lena==0?0:(a[lena--]-'0');
66             bn=lenb==0?0:(b[lenb--]-'0');
67             d[i]=(an+bn+flag)%10;
68             flag=(an+bn+flag)/10;
69         }
70         int zd=0;
71         while(d[lend]==0) lend--,zd++;//,cout<<d[lend]<<' '<<lend<<endl;;
72         while(lend>=0&&(d[lend]==(c[lenc]-'0'))&&lenc>=1)
73         {
74             lend--;
75             lenc--;
76         }
77         int lenab=max(za,zb);
78         int lenmx=max(max({za,zb})+zd,zc);
79         if(((lenc==0)&&(lend==0)&&(d[0]==0))||((lenc==0)&&(lend==-1)))
80         {
81             printf("%d %d %d\n",lenmx-(lenab+zd)+lenab-za,lenmx-(lenab+zd)+lenab-zb,lenmx-zc);
82             continue;
83         }
84         puts("-1");
85     }
86 }        
View Code

相关文章:

  • 2021-09-10
  • 2022-03-05
  • 2021-08-08
  • 2021-07-12
  • 2022-02-17
  • 2021-11-22
  • 2022-01-08
  • 2022-12-23
猜你喜欢
  • 2021-05-29
  • 2021-11-25
  • 2022-01-21
  • 2022-01-25
  • 2021-09-14
  • 2021-11-24
相关资源
相似解决方案