您的位置:首页 > 其它

大数相加

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

代码:

<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: