首页 > 代码库 > 3116 高精度练习之加法

3116 高精度练习之加法

3116 高精度练习之加法

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 Description

给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位。

输入描述 Input Description

读入两个用空格隔开的正整数

输出描述 Output Description

输出A+B的值

样例输入 Sample Input

3 12

样例输出 Sample Output

15

数据范围及提示 Data Size & Hint

两个正整数的位数不超过500位

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
char m[1001],n[1001];
int a[1001],b[1001],c[1001];
int main()
{
	scanf("%s",&m);
	scanf("%s",&n);
	int lm=strlen(m);
	int ln=strlen(n);
	for(int i=0;i<lm;i++)
	 {
	 	a[i]=m[lm-i-1]-‘0‘;
	 }
	 for(int i=0;i<ln;i++)
	  {
	  	b[i]=n[ln-i-1]-‘0‘;
	  }
	 int x=0;
	 int lc=0;
	 while(lc<=lm||lc<=ln)
	  {
	  	c[lc]=a[lc]+b[lc]+x;
	  	x=c[lc]/10;
	  	c[lc]%=10;
	  	lc++;
	   } 
	 c[lc]=x;
	 while(c[lc]==0&&lc>=1)
	  {
	  	lc--;
		}  
		for(int i=lc;i>=0;i--)
		 {
		 	cout<<c[i];
		 }
}

3116 高精度练习之加法