天天看點

落谷 P1601 A+B Problem(高精)

題目背景

題目描述

高精度加法,x相當于a+b problem,[b][color=red]不用考慮負數[/color][/b]

輸入格式

分兩行輸入a,b<=10^500

輸出格式

輸出隻有一行,代表A+B的值

輸入輸出樣例

輸入

1

1

輸出

2

#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[222]={0},b[222]={0},c[444]={0}; 
	string str1,str2;
	cin>>str1;
	cin>>str2;
	int lena,lenb,lenc;
	lena=str1.length();
	lenb=str2.length();
	//1.将兩個字元串倒序 
	for(int i=0;i<lena;++i)
	a[lena-i]=str1[i]-'0';
	for(int i=0;i<lenb;++i)
	b[lenb-i]=str2[i]-'0';
	//2.将兩個字元串逐位相加
    int len=1,temp=0,forward=0;
	while(len<=lena+lenb){
		temp=a[len]+b[len]+forward;
		c[len]=temp%10;
		forward=temp/10;
		len++;
	}
	int index=0;
	int flag=1;
	for(int i=lena+lenb;i>0;i--){
		if(c[i]){
			index=i;
			flag=0;
			break;
		}
	}
	if(flag){
		cout<<0<<endl;
		return 0;
	}
	for(int i=index;i>0;i--)
	cout<<c[i];
	cout<<endl;
	return 0;
}
           
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a[1000]={0},b[1000]={0},c[1000]={0}; 
	string str1,str2;
	cin>>str1;
	cin>>str2;
	int lena,lenb,lenc;
	lena=str1.length();
	lenb=str2.length();
	//1.将兩個字元串倒序 
	for(int i=0;i<lena;++i)
	a[lena-i]=str1[i]-'0';
	for(int i=0;i<lenb;++i)
	b[lenb-i]=str2[i]-'0';
	//2.将兩個字元串逐位相加
    int len=1,temp=0,forward=0;
	while(len<=lena+lenb){
		temp=a[len]+b[len]+forward;
		c[len]=temp%10;
		forward=temp/10;
		len++;
	}
	int index=0;
	int flag=1;
	for(int i=lena+lenb;i>0;i--){
		if(c[i]){
			index=i;
			flag=0;
			break;
		}
	}
	if(flag){
		cout<<0<<endl;
		return 0;
	}
	for(int i=index;i>0;i--)
	cout<<c[i];
	cout<<endl;
	return 0;
}