A+B Problems
这是这个脑子里只有Aimee的人的第一篇博客
他还并不强,但是他还是选择了写博客。
因为,黑夜漫漫必有光明。
正文
原题:https://www.luogu.org/problemnew/show/P1601
经典模板高精度
以下为代码
/* 高精度,基础类型,也是必学的模板 核心思想在于用数组存储每一位,然后模拟竖式计算 */ #include<iostream> #include<cstdio> #include<cstring> using namespace std; int a1[100000],b1[100000],c[100000]; char a[100000],b[100000]; int main(){ scanf("%s",&a); scanf("%s",&b); int a3=strlen(a); for(int i=1;i<=a3;++i) a1[i]=int(a[a3-i]-'0');//倒序存储,不然会出现奇奇怪怪的逻辑错误 int b3=strlen(b); for(int i=1;i<=b3;++i) b1[i]=int(b[b3-i]-'0'); int longg=max(a3,b3); for(int i = 1;i <= longg;i++){ c[i]+=a1[i]+b1[i];//这是模拟竖式 if(c[i]>=10) { c[i+1]=c[i+1]+c[i]/10;//处理进位 c[i]%=10; } } longg++;//不写的话会有很奇怪的错误,但我也不会知到为什么 while(!c[longg]) longg--;//处理前导零 if(longg<=0) cout<<0;//解决答案为零时的问题,在洛谷,第四个点就需要这行 for(int i=longg;i>=1;--i)//倒着存怎么能不倒着输出呢 cout<<c[i]; return 0;//关键不忘 }