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

 

posted @ 2019-03-03 10:08  千载煜  阅读(189)  评论(0编辑  收藏  举报