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; }