char* addStrings(char* num1, char* num2) {
int carry
= 0, temp
, off_0
= '0', len1
= strlen(num1
), len2
= strlen(num2
), lensum
= ((len1
>len2
)?len1
:len2
) + 1; char* sum
= malloc(sizeof(char)*(lensum
+1));
sum[lensum--]='\0';
while(len1 > 0 || len2 > 0){
len1--;
len2--;
temp = carry;
if(len1 >= 0)
temp += num1[len1] - off_0;
if(len2 >= 0)
temp += num2[len2] - off_0;
carry = temp/10;
sum[lensum--] = off_0 + temp%10;
}
if(carry > 0)
sum[lensum] = off_0 + carry;
if(sum[0] == '\0'){
sum[0] = sum[1];
for(int i = 1; sum[i] != '\0'; i++){
sum[i] = sum[i+1];
}
}
return sum;
}
int main(void) {
char* s = addStrings("61480723987857250303867015585644902996295272","17149437458129895288707346085");
return 0;
}
Y2hhciogYWRkU3RyaW5ncyhjaGFyKiBudW0xLCBjaGFyKiBudW0yKSB7CiAgICBpbnQgY2FycnkgPSAwLCB0ZW1wLCBvZmZfMCA9ICcwJywgbGVuMSA9IHN0cmxlbihudW0xKSwgbGVuMiA9IHN0cmxlbihudW0yKSwgbGVuc3VtID0gKChsZW4xPmxlbjIpP2xlbjE6bGVuMikgKyAxOwogICAgY2hhciogc3VtID0gbWFsbG9jKHNpemVvZihjaGFyKSoobGVuc3VtKzEpKTsKICAgICAgIAogICAgc3VtW2xlbnN1bS0tXT0nXDAnOwogICAgd2hpbGUobGVuMSA+IDAgfHwgbGVuMiA+IDApewogICAgCWxlbjEtLTsKICAgIAlsZW4yLS07CiAgICAgICAgdGVtcCA9IGNhcnJ5OwogICAgICAgIGlmKGxlbjEgPj0gMCkKICAgICAgICAJdGVtcCArPSBudW0xW2xlbjFdIC0gb2ZmXzA7CiAgICAgICAgaWYobGVuMiA+PSAwKQogICAgICAgIAl0ZW1wICs9IG51bTJbbGVuMl0gLSBvZmZfMDsKICAgICAgICBjYXJyeSA9IHRlbXAvMTA7CiAgICAgICAgc3VtW2xlbnN1bS0tXSA9IG9mZl8wICsgdGVtcCUxMDsKICAgIH0KICAgIAogICAgaWYoY2FycnkgPiAwKQogICAgc3VtW2xlbnN1bV0gPSBvZmZfMCArIGNhcnJ5OwogICAgCiAgICBpZihzdW1bMF0gPT0gJ1wwJyl7CiAgICAgICAJc3VtWzBdID0gc3VtWzFdOwogICAgICAgIGZvcihpbnQgaSA9IDE7IHN1bVtpXSAhPSAnXDAnOyBpKyspewogICAgICAgICAgICBzdW1baV0gPSBzdW1baSsxXTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBzdW07Cn0KCmludCBtYWluKHZvaWQpIHsKCWNoYXIqIHMgPSBhZGRTdHJpbmdzKCI2MTQ4MDcyMzk4Nzg1NzI1MDMwMzg2NzAxNTU4NTY0NDkwMjk5NjI5NTI3MiIsIjE3MTQ5NDM3NDU4MTI5ODk1Mjg4NzA3MzQ2MDg1Iik7CglwcmludGYoIlN1bSBpcyAlcyIsIHMpOwoJcmV0dXJuIDA7Cn0K