文章

36

粉丝

505

获赞

55

访问

370.6k

头像
题解:大整数加法
P1474 武汉大学2018年机试题
发布于2020年3月15日 20:48
阅读数 10.3k

提供两种模拟加法的方法:

(一般来说数组模拟效率更高)

1.用数组来模拟加法

#include<bits/stdc++.h>
using namespace std;
int a[1005], b[1005], c[1005];//c存答案
int main()
{
	string A, B;
	while (cin >> A >> B)
	{
        //初始化
		memset(a, 0, sizeof(a));
		memset(b, 0, sizeof(a));
		memset(c, 0, sizeof(a));
        //这里将字符转换成数字,并且反着记录,这样是为了之后做加法从后往前处理更方便
		int len = max(A.length(), B.length());
		for (int i = A.length() - 1, j = 1; i >= 0; i--, j++)
			a[j] = A[i] - '0';
		for (int i = B.length() - 1, j = 1; i >= 0; i--, j++)
			b[j] = B[i] - '0';
        //从后往前做加法,模拟进位
		for (int i = 1; i <= len; i++)
		{
			c[i] += a[i] + b[i];
			c[i + 1] = c[i] / 10;
			c[i] %= 10;
		}
        //如果第len+1位不为0说明最高位进了一位
		if (c[len + 1])
			len++;
        //反向输出
		for (int i = len; i >= 1; i--)
			cout << c[i];
		cout << endl;
	}
	return 0;
}

2.用字符串模拟加法 

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string A, B;
	wh...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发