Live2D

A+B Problem(高精)

题目背景

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int c[10^500+1];
long long d,e,y,x,cnt,jw;
char a[10^500+1],b[10^500+1];
int main()
{
	cin>>a>>b;
	x=strlen(a);
	y=strlen(b);
	if(x>y)
	{
		cnt=x;
	}
	else
	{
		cnt=y;
	}
	for(d=0;d<=cnt-1;d++)
	{
		if(x-d-1<0||y-d-1<0)
		{
			if(x-d-1<0)
			{
				c[cnt-d]=b[y-d-1]-'0'+jw;
				if(c[cnt-d]>=10)
				{
					jw=1;
					c[cnt-d]=c[cnt-d]-10;
				}
				else
				jw=0;
				continue;
			}
			if(y-d-1<0)
			{
				c[cnt-d]=a[x-d-1]-'0'+jw;
				if(c[cnt-d]>=10)
				{
					jw=1;
					c[cnt-d]=c[cnt-d]-10;
				}
				else
				jw=0;
				continue;
			}
		}	
		if(a[x-d-1]-'0'+b[y-d-1]-'0'+jw<10)
		{
			c[cnt-d]=jw+a[x-d-1]-'0'+b[y-d-1]-'0';
			jw=0;
		}
		else
		{
			c[cnt-d]=jw+a[x-d-1]-'0'+b[y-d-1]-'0'-10;
			jw=1;
		}
	}
	if(jw==1)
	{
		c[0]=1;
	}
	for(int ltt=0;ltt<=cnt;ltt++)
	{
		if(ltt==0)
		{
			if(c[ltt]==0)
			{
				continue;
			}
		}
		cout<<c[ltt];
	}
}


posted @ 2018-01-08 15:56  ztz11  阅读(139)  评论(0编辑  收藏  举报