大数相加

大数相加问题是一个很常见的问题,就是用数组来模拟,不过我以前都是翻转过来模拟加法,不过发现了一个更快的算法,根本不用翻转,直接模拟,以前没怎么在意大数相加的时间问题,不过现在应该在意了,每道题都应该想一想是否还可以更快。代码很好理解,就不解释了。

代码:

<span style="font-family:Courier New;font-size:18px;">#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	char a[1005];
	char b[1005];
	char c[1005];
	while(cin >> a)
	{
		cin >> b;
		int lena = strlen(a)-1;
		int lenb = strlen(b)-1;
		int i,temp;
		for(i=0,temp = 0; lena >= 0 || lenb >= 0; i++, lena--,lenb--)
		{
			if(lena >= 0 && lenb >= 0)
				c[i] = a[lena] + b[lenb] - '0' + temp;
			else if(lena >= 0 && lenb < 0)
				c[i] = a[lena] + temp;
			else
				c[i] = b[lenb] + temp;
			temp = 0;
			if(c[i] > '9')
			{
				c[i] = c[i] - 10;
				temp = 1;
			}
		}
		if(temp == 1)
			cout << '1';
		while(i--)
		{
			cout << c[i];
		}
		cout << endl;
	}
	return 0;
} </span>

你可能感兴趣的:(大数相加)