#include <stdio.h>
#include <string.h>
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
void usd(char *str, int strl)
{
strl--;
for (int i = 0; i <= strl / 2; i++)
{
char temp = str[i];
str[i] = str[strl - i];
str[strl - i] = temp;
}
}
int main()
{
char str[3][10006];
int mcheck1 = 0, mcheck2 = 0;
//절대값 비교
char * bignum;
char * smallnum;
{
bignum = str[0];
smallnum = str[1];
}
{
bignum = str[1];
smallnum = str[0];
}
else
{
if (strcmp(str
[0], str
[1]) > 0) {
bignum = str[0];
smallnum = str[1];
}
else
{
bignum = str[1];
smallnum = str[0];
}
}
if (bignum[0] == '-') mcheck1 = 1;
if (smallnum[0] == '-') mcheck2 = 1;
if ((mcheck1 + mcheck2) % 2 == 0)
{
usd
(smallnum
, strlen(smallnum
));
int i = 0;
int carry = 0;
for (; smallnum[i] <= '9' && smallnum[i] >= '0'; i++)
{
int a, b;
a = smallnum[i] - '0';
b = bignum[i] - '0';
str[2][i] = (a + b + carry) % 10 + '0';
if (a + b + carry > 9) carry = 1;
else carry = 0;
}
for (; bignum[i] <= '9' && bignum[i] >= '0'; i++)
{
int a = bignum[i] - '0';
str[2][i] = (a + carry) % 10 + '0';
if (a + carry > 9) carry = 1;
else carry = 0;
}
if (carry == 1) str[2][i++] = '1';
if (mcheck1 == 1) str[2][i++] = '-';
str[2][i] = '\0';
}
else
{
usd
(smallnum
, strlen(smallnum
));
int i = 0;
int carry = 0;
for (; smallnum[i] <= '9' && smallnum[i] >= '0'; i++)
{
int a, b;
a = smallnum[i] - '0';
b = bignum[i] - '0';
if (b - a - carry < 0)
{
b = b + 10 - a - carry;
carry = 1;
}
else
{
b = b - a - carry;
carry = 0;
}
str[2][i] = b + '0';
}
for (; bignum[i] <= '9' && bignum[i] >= '0'; i++)
{
int b = bignum[i] - '0';
if (b - carry < 0)
{
b = b + 10 - carry;
carry = 1;
}
else
{
b = b - carry;
carry = 0;
}
str[2][i] = b + '0';
}
while(str[2][i - 1] == '0') i--;
if (mcheck1 == 1) str[2][i++] = '-';
str[2][i] = '\0';
}
for(int i
= 0; i
< strlen(str
[2]); i
++) {
if(str[2][i] == '-')
{
printf("%d", -1*(str
[2][++i
]-'0')); continue;
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUlOKHgseSkgKCgoeCkgPCAoeSkpID8gKHgpIDogKHkpKQp2b2lkIHVzZChjaGFyICpzdHIsIGludCBzdHJsKQp7CglzdHJsLS07Cglmb3IgKGludCBpID0gMDsgaSA8PSBzdHJsIC8gMjsgaSsrKQoJewoJCWNoYXIgdGVtcCA9IHN0cltpXTsKCQlzdHJbaV0gPSBzdHJbc3RybCAtIGldOwoJCXN0cltzdHJsIC0gaV0gPSB0ZW1wOwoJfQp9CgppbnQgbWFpbigpCnsKCWNoYXIgc3RyWzNdWzEwMDA2XTsKCWludCBtY2hlY2sxID0gMCwgbWNoZWNrMiA9IDA7CgoJc2NhbmYoIiVzIiwgc3RyWzBdKTsKCXNjYW5mKCIlcyIsIHN0clsxXSk7CgoJLy/soIjrjIDqsJIg67mE6rWQCgoJY2hhciAqIGJpZ251bTsKCWNoYXIgKiBzbWFsbG51bTsKCglpZiAoc3RybGVuKHN0clswXSkgPiBzdHJsZW4oc3RyWzFdKSkKCXsKCQliaWdudW0gPSBzdHJbMF07CgkJc21hbGxudW0gPSBzdHJbMV07Cgl9CgllbHNlIGlmIChzdHJsZW4oc3RyWzBdKSA8IHN0cmxlbihzdHJbMV0pKQoJewoJCWJpZ251bSA9IHN0clsxXTsKCQlzbWFsbG51bSA9IHN0clswXTsKCX0KCWVsc2UKCXsKCQlpZiAoc3RyY21wKHN0clswXSwgc3RyWzFdKSA+IDApCgkJewoJCQliaWdudW0gPSBzdHJbMF07CgkJCXNtYWxsbnVtID0gc3RyWzFdOwoJCX0KCQllbHNlCgkJewoJCQliaWdudW0gPSBzdHJbMV07CgkJCXNtYWxsbnVtID0gc3RyWzBdOwoJCX0KCX0KCglpZiAoYmlnbnVtWzBdID09ICctJykgbWNoZWNrMSA9IDE7CglpZiAoc21hbGxudW1bMF0gPT0gJy0nKSBtY2hlY2syID0gMTsKCglpZiAoKG1jaGVjazEgKyBtY2hlY2syKSAlIDIgPT0gMCkKCXsKCQl1c2QoYmlnbnVtLCBzdHJsZW4oYmlnbnVtKSk7CgkJdXNkKHNtYWxsbnVtLCBzdHJsZW4oc21hbGxudW0pKTsKCgkJaW50IGkgPSAwOwoJCWludCBjYXJyeSA9IDA7CgkJZm9yICg7IHNtYWxsbnVtW2ldIDw9ICc5JyAmJiBzbWFsbG51bVtpXSA+PSAnMCc7IGkrKykKCQl7CgkJCWludCBhLCBiOwoJCQlhID0gc21hbGxudW1baV0gLSAnMCc7CgkJCWIgPSBiaWdudW1baV0gLSAnMCc7CgkJCXN0clsyXVtpXSA9IChhICsgYiArIGNhcnJ5KSAlIDEwICsgJzAnOwoJCQlpZiAoYSArIGIgKyBjYXJyeSA+IDkpIGNhcnJ5ID0gMTsKCQkJZWxzZSBjYXJyeSA9IDA7CgkJfQoJCWZvciAoOyBiaWdudW1baV0gPD0gJzknICYmIGJpZ251bVtpXSA+PSAnMCc7IGkrKykKCQl7CgkJCWludCBhID0gYmlnbnVtW2ldIC0gJzAnOwoJCQlzdHJbMl1baV0gPSAoYSArIGNhcnJ5KSAlIDEwICsgJzAnOwoJCQlpZiAoYSArIGNhcnJ5ID4gOSkgY2FycnkgPSAxOwoJCQllbHNlIGNhcnJ5ID0gMDsKCQl9CgkJaWYgKGNhcnJ5ID09IDEpIHN0clsyXVtpKytdID0gJzEnOwoJCWlmIChtY2hlY2sxID09IDEpIHN0clsyXVtpKytdID0gJy0nOwoJCXN0clsyXVtpXSA9ICdcMCc7CgoJCXVzZChzdHJbMl0sIHN0cmxlbihzdHJbMl0pKTsKCgkJCgl9CgoJZWxzZQoJewoJCXVzZChiaWdudW0sIHN0cmxlbihiaWdudW0pKTsKCQl1c2Qoc21hbGxudW0sIHN0cmxlbihzbWFsbG51bSkpOwoKCQlpbnQgaSA9IDA7CgkJaW50IGNhcnJ5ID0gMDsKCgkJZm9yICg7IHNtYWxsbnVtW2ldIDw9ICc5JyAmJiBzbWFsbG51bVtpXSA+PSAnMCc7IGkrKykKCQl7CgkJCWludCBhLCBiOwoJCQlhID0gc21hbGxudW1baV0gLSAnMCc7CgkJCWIgPSBiaWdudW1baV0gLSAnMCc7CgkJCWlmIChiIC0gYSAtIGNhcnJ5IDwgMCkKCQkJewoJCQkJYiA9IGIgKyAxMCAtIGEgLSBjYXJyeTsKCQkJCWNhcnJ5ID0gMTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWIgPSBiIC0gYSAtIGNhcnJ5OwoJCQkJY2FycnkgPSAwOwoJCQl9CgkJCXN0clsyXVtpXSA9IGIgKyAnMCc7CgkJfQoJCWZvciAoOyAgYmlnbnVtW2ldIDw9ICc5JyAmJiBiaWdudW1baV0gPj0gJzAnOyBpKyspCgkJewoJCQlpbnQgYiA9IGJpZ251bVtpXSAtICcwJzsKCQkJaWYgKGIgLSBjYXJyeSA8IDApCgkJCXsKCQkJCWIgPSBiICsgMTAgLSBjYXJyeTsKCQkJCWNhcnJ5ID0gMTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWIgPSBiIC0gY2Fycnk7CgkJCQljYXJyeSA9IDA7CgkJCX0KCQkJc3RyWzJdW2ldID0gYiArICcwJzsKCQl9CgkJd2hpbGUoc3RyWzJdW2kgLSAxXSA9PSAnMCcpIGktLTsKCQlpZiAobWNoZWNrMSA9PSAxKSBzdHJbMl1baSsrXSA9ICctJzsKCQlzdHJbMl1baV0gPSAnXDAnOwoJCXVzZChzdHJbMl0sIHN0cmxlbihzdHJbMl0pKTsKCX0KCWZvcihpbnQgaSA9IDA7IGkgPCBzdHJsZW4oc3RyWzJdKTsgaSsrKQoJewoJCWlmKHN0clsyXVtpXSA9PSAnLScpCgkJewoJCQlwcmludGYoIiVkIiwgLTEqKHN0clsyXVsrK2ldLScwJykpOwoJCQljb250aW51ZTsKCQl9CgkJCXByaW50ZigiJWQiLCBzdHJbMl1baV0tJzAnKTsKCX0KCXJldHVybiAwOwp9