高精度加法

Kinghero King of the summit 2023-07-07 9:23:21 2023-07-07 9:23:39 0
良心商家
#include <bits/stdc++.h>
using namespace std;
int main()
{
	char a1[5005],b1[5005];
	int a[5005],b[5005],c[5005];
	memset(a,0,sizeof(a));//将数组a赋值为0 
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	scanf("%s%s",a1,b1);
	int lena = strlen(a1);
	int lenb = strlen(b1);
	for(int i = 0;i < lena;i++)//将加数放入a数组 
	{
		a[lena - i] = a1[i] - '0';
	}
	for(int i = 0;i < lenb;i++)//将加数放入b数组 
	{
		b[lenb - i] = b1[i] - '0';
	}
	int lenc = 1;//当前需要计算的加法的位置
	int x = 0;//进位标记
	while(lenc <= lena || lenc <= lenb)//有数字可以继续加
	{
		c[lenc] = a[lenc] + b[lenc] + x;
		x = c[lenc] / 10;
		c[lenc] %= 10;
		lenc++;
	}
	c[lenc] = x;
	if(c[lenc] == 0) //如果没有进位
	{
		lenc--;
	}
	for(int i = lenc;i >= 1;i--)
	{
		printf("%d",c[i]);
	}
	printf("\n");
	return 0;
}
{{ vote && vote.total.up }}