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
#include <cstdio>
#include <cstring>
char a[50005],b[5005],sum[5005];
int main(){
    scanf(" %s ",&a);
    scanf(" %s ",&b);
    int lenA = strlen( a );
    int lenB = strlen( b );
    int poz = 5004;
    sum[ poz-- ] = 0;
    int rest = 0;
    if (lenA >= lenB) {
        int i=0;
        for( ; i<lenB; i++){
            sum[ poz-- ] = '0'+ (((a[ lenA - i - 1 ] - '0') + (b[ lenB - i - 1 ] - '0') + rest) % 10);
            rest = ((a[ lenA - i - 1 ] - '0') + (b[ lenB - i - 1 ] - '0') + rest) / 10;
            //printf("a");
        }
        for( ; i< lenA; i++) {
            sum[ poz-- ] = '0' + (((a[ lenA - i - 1  ] - '0') + rest) % 10);
            rest = ((a[ lenA - i - 1 ] - '0') + rest) / 10;
            //printf("b");
        }
        if(rest>0)
            sum[ poz-- ] = '0' + rest;
        poz++;
    } else {
        int i=0;
        for( ; i<lenA; i++){
            sum[ poz-- ] = '0'+ (((a[ lenA - i - 1 ] - '0') + (b[ lenB - i - 1 ] - '0') + rest) % 10);
            rest = ((a[ lenA - i - 1 ] - '0') + (b[ lenB - i - 1 ] - '0') + rest) / 10;
            //printf("a");
        }
        for( ; i< lenB; i++) {
            sum[ poz-- ] = '0' + (((b[ lenB - i - 1  ] - '0') + rest) % 10);
            rest = ((b[ lenB - i - 1 ] - '0') + rest) / 10;
            //printf("b");
        }
        if(rest>0)
            sum[ poz-- ] = '0' + rest;
        poz++;
    }
    printf("%s\n",sum+poz);
    return 0;
}