传送门 https://www.luogu.org/problemnew/show/P1601
虽然本题一本通上有, 但是一本通不是万能的, 这道题就漏掉了进位 (所以这告诉我们加法进位很重要)
直接上修改后的题解
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- char s[10001],k[10001];
- int a[10000001],b[100001],c[10000001];
- int main()
- {int lena,lenb,lenc;
- scanf("%s",s);// 洛谷上用 gets 会有编译提示 (其实没事)
- scanf("%s",k);
- lena=strlen(s);
- lenb=strlen(k);
- for(int i=0;i<=lena-1;i++)
- {a[lena-i]=s[i]-48;
- }
- for(int i=0;i<=lenb-1;i++)
- b[lenb-i]=k[i]-48;
- lenc=1;
- int x=0;
- while(lenc<=lena||lenc<=lenb)
- {
- c[lenc]=a[lenc]+b[lenc]+x;// 这里的 x 一本通上漏掉了
- x=c[lenc]/10;
- c[lenc]%=10;
- lenc++;
- }
- c[lenc]=x;
- if(c[lenc]==0)lenc--;
- for(int i=lenc;i>=1;i--)
- cout<<c[i];
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2974352.html