算法笔记5.6大整数运算(加法)

大整数又称高精度整数,用基本数据类型无法村存储其精度的整数,所以需要用数组存储

需要注意以下几点:

1、大整数运算,用数组来表示,数组中每一位存储整数的每一位。
2、 整数的高位存储在数组的高位,整数的低位存储在数组的低位,运算的时候从低位到高位进行枚举。
3、整数按照字符串类型进行读入,读入的字符串需要逆序,并且使用len来记录位的长度
4、需要构造函数,能够直接初始化结构体
5、通过字符串进行读入,在转存到bign结构体,读入的时候整数高位在字符串低位,因此要倒着赋值

#include<cstdio>
#include<cstring>
struct bign{
	int d[1000];
	int len;
	bign(){//初始化结构体 
		memset(d,0,sizeof(d));
		len=0;
	}
};
bign change(char str[])
{//将整数转为 bign 
	bign a;
	a.len=strlen(str);
	for(int i=0;i<a.len;i++)
	{
		a.d[i]=str[a.len-i-1]-'0';
	}
	return a;
}
bign add(bign a,bign b)
{
	bign c;
	int carry=0;//进位
	for(int i=0;i<a.len||i<b.len;i++)
	{
		int t=a.d[i]+b.d[i]+carry;
		c.d[c.len++]=t%10;
		carry=t/10;
	} 
	if(carry!=0)
	{
		c.d[c.len++]=carry;
	}
	return c;
}
void print(bign a)
{
	for(int i=a.len-1;i>=0;i--)
	{
		printf("%d",a.d[i]);
	}
}
int main()
{
	char str1[1000],str2[1000];
	scanf("%s%s",str1,str2);
	bign a=change(str1);
	bign b=change(str2);
	print(add(a,b));
	return 0;
}


 

发布了61 篇原创文章 · 获赞 0 · 访问量 607

猜你喜欢

转载自blog.csdn.net/qq_38054511/article/details/103841311