You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.2 KiB
69 lines
1.2 KiB
#include<bits/stdc++.h>
|
|
using namespace std;
|
|
#define MAX 1000 /* precision */
|
|
void input(char ch[]) {
|
|
scanf("%s", ch);
|
|
}
|
|
void add(char ch1[], char ch2[], char ch3[]) {
|
|
int len1, len2, len3, maxlen;
|
|
int sum, flag;
|
|
len1=strlen(ch1);
|
|
len2=strlen(ch2);
|
|
len3=maxlen=len1 >= len2 ? len1 : len2;
|
|
flag=0; /* jin wei */
|
|
|
|
while(len1>=1 && len2>=1) {
|
|
sum=ch1[len1-1]-'0' + ch2[len2-1]-'0' + flag; /* char -> int to calculate sum */
|
|
flag=0;
|
|
|
|
if(sum>=10) {
|
|
sum-=10;
|
|
flag=1;
|
|
}
|
|
ch3[maxlen-1]=sum + '0';
|
|
len1--;
|
|
len2--;
|
|
maxlen--;
|
|
}
|
|
while(len1>=1) { /* if num1[] is longer or maxer */
|
|
sum=ch1[len1-1]-'0' + flag;
|
|
flag=0;
|
|
|
|
if(sum>=10) {
|
|
sum-=10;
|
|
flag=1;
|
|
}
|
|
ch3[maxlen-1]=sum + '0';
|
|
len1--;
|
|
maxlen--;
|
|
}
|
|
|
|
while(len2>=1) { /* if num2[] is longer or maxer */
|
|
sum=ch2[len2-1]-'0' + flag;
|
|
flag=0;
|
|
|
|
if(sum>=10) {
|
|
sum-=10;
|
|
flag=1;
|
|
}
|
|
ch3[maxlen-1]=sum + '0';
|
|
len2--;
|
|
maxlen--;
|
|
}
|
|
if(flag != 0) /* if flag, then print gaowei(jinwei) */
|
|
printf("%d", flag);
|
|
for(int i=0; i<len3; i++)
|
|
printf("%c", ch3[i]);
|
|
printf("\n");
|
|
}
|
|
int main() {
|
|
char ch1[MAX], ch2[MAX], ch3[MAX+1];
|
|
memset(ch3, '0', sizeof(ch3));
|
|
input(ch1);
|
|
input(ch2);
|
|
add(ch1, ch2, ch3);
|
|
return 0;
|
|
}
|
|
|
|
|