poj1002

大数相加,方法就是用字符串存数字,然后模拟手算的方法计算。虽是水题,但有些细节还是要注意。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char a[1010],b[1010];
char rsl[2000];
void (char str[])
{
int len=strlen(str);
for(int i=0;i<len/2;i++){
int tmp=str[i];
str[i]=str[len-i-1];
str[len-i-1]=tmp;
}
}
void add(char a[],char b[])
{
int i;
int stop=0;
memset(rsl,'0',sizeof(rsl));
int len=max(strlen(a),strlen(b));
a[strlen(a)]=b[strlen(b)]='0';
for(i=0;i<len;i++){
if((a[i]-'0')+(b[i]-'0')+(rsl[i]-'0')>9){
rsl[i]=(((a[i]-'0')+(b[i]-'0')+(rsl[i]-'0'))%10)+'0';

rsl[i+1]+=1;
stop=i+1;
// printf("ans[i+1]=%cn",rsl[i+1]);
}else{
rsl[i]=(a[i]-'0'+b[i]-'0'+rsl[i]-'0')+'0';
stop=i;
}
}
rsl[stop+1]='