加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数加法

发布时间:2020-12-14 03:35:26 所属栏目:大数据 来源:网络整理
导读:?? ? 描述 求两个非负整数( 1000 位以内)的和。 输入 两个非负整数( 1000 位以内),以空格分隔。 输出 两个非负整数的和。 样例输入 222222222211?222222222222 样例输出 333333333333 提示 ? 题目来源 GUOJ //1011 还有很多可改进的地方#include "stdio
??


?

描述

求两个非负整数(1000位以内)的和。

输入

两个非负整数(1000位以内),以空格分隔。

输出

两个非负整数的和。

样例输入

222222222211?222222222222

样例输出

333333333333

提示

?

题目来源

GUOJ


//1011 还有很多可改进的地方
#include "stdio.h"
#include "string.h"

int main()
{
	char Na[1002],Nb[1002];//以防进位
	unsigned Ia[1002]={0},Ib[1002]={0};//将字符转化为数字存储处理 倒过来 刚好防止进位带的移位 然后逆序输出即是答案

	int La,Lb;
	int i;
	int k=0;//进位标志符
	scanf("%s%s",Na,Nb);
	La=strlen(Na);
	Lb=strlen(Nb);

	for(i=0;i<La;++i)
	{
		Ia[La-i-1]=Na[i]-'0';
	}
	for(i=0;i<Lb;++i)
	{
		Ib[Lb-i-1]=Nb[i]-'0';
	}

	if(La<=Lb)
	{
		for(i=0;i<La;++i)
		{
			Ib[i]+=Ia[i];
		}
		for(i=0;i<Lb;++i)
		{
			if(Ib[i]>=10)
			{
				if(Lb-1==i)
				{
					Ib[i]=Ib[i]%10;
					Ib[i+1]=1;
					++k;
				}
				else
				{
					Ib[i]=Ib[i]%10;
					Ib[i+1]+=1;
				}
			}
		}
		if(1==k)
		{
			for(i=Lb;i>=0;--i)
			{
				printf("%d",Ib[i]);
			}
		}
		else
		{
			for(i=Lb-1;i>=0;--i)
			{
				printf("%d",Ib[i]);
			}
		}
	}
	else
	{
		for(i=0;i<Lb;++i)
		{
			Ia[i]+=Ib[i];
		}
		for(i=0;i<La;++i)
		{
			if(Ia[i]>=10)
			{
				if(La-1==i)
				{
					Ia[i]=Ia[i]%10;
					Ia[i+1]=1;
					++k;
				}
				else
				{
					Ia[i]=Ia[i]%10;
					Ia[i+1]+=1;
				}
			}
		}
		if(1==k)
		{
			for(i=La;i>=0;--i)
			{
				printf("%d",Ia[i]);
			}
		}
		else
		{
			for(i=La-1;i>=0;--i)
			{
				printf("%d",Ia[i]);
			}
		}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读