AcWing 791. 高精度加法 (数组实现)
原题链接
简单
作者:
GRID
,
2021-03-16 15:00:45
,
所有人可见
,
阅读 282
分析
- 将输入的大数存入数组a和数组b
- 将存好的a[]和b[]加起来,用temp[]进行存储。计算完成后将结果赋给a[]
- 输出结果
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int a[N],b[N],l1,l2;
char s[N];
void print(int a[]) //输出结果
{
int k=N-1;
while(k && !a[k]) k--;
for(int i=k;i>=0;i--) cout<<a[i];
}
void add(int a[],int b[])
{
if(l1<l2) //若l1<l2,则进行交换
swap(l1,l2);
int t=0,temp[N];
memset(temp,0,sizeof temp);
for(int i=0;i<l1+1;i++)
{
t+=a[i]+b[i];
temp[i]=t%10;
t/=10;
}
memcpy(a,temp,sizeof temp); //将temp[]得到的结果赋值给a[]
}
int main()
{
scanf("%s",s); //以字符串的形式读入a
l1=strlen(s); //第一个大数的长度l1
for(int i=0;i<l1;i++) a[l1-i-1]=s[i]-'0'; //将大数的每一位存入数组a
scanf("%s",s);
l2=strlen(s);
for(int i=0;i<l2;i++) b[l2-i-1]=s[i]-'0';
add(a,b);
print(a);
return 0;
}