您的位置:首页 > 其它

HDOJ 1002 A + B Problem II

2015-12-12 00:36 344 查看
输出格式害死人。

#include<stdio.h>
#include<string.h>
int main()
{
int n;
int i, j, k, l = 0;
scanf("%d", &n);
while(n)
{
char add1[1005], add2[1005], result[1009];
char add1print[1005], add2print[1005];
int len1, len2, minLen, maxLen;
int count1 = 0, count2 = 0;
scanf("%s", add1);
scanf("%s", add2);
len1 = strlen(add1);
len2 = strlen(add2);
strcpy(add1print, add1);
strcpy(add2print, add2);
minLen = len1 < len2 ? len1 : len2;
maxLen = len1 > len2 ? len1 : len2;
for(i = 0; i < strlen(add2); i++)
add2[len2 - i] = add2[len2 - 1 - i];
for(i = 0; i < strlen(add1); i++)
add1[len1 - i] = add1[len1 - 1 - i];
add1[0] = add2[0] = '0';
add1[len1 + 1] = add2[len2 + 1] = '\0';
if(len1 > len2)
strcpy(result, add1);
else
strcpy(result, add2);
for(i = 0; i <= minLen; i++)
{
int a = add1[len1 - i] - '0';
int b = add2[len2 - i] - '0';
a += b;
if(a >= 10)
{
a = a - 10;
for(j = i + 1;; j++)
{
if(add1[len1 - j] < '9')
{
add1[len1 - j]++;
break;
}
else
{
add1[len1 - j] = '0';
if(add1[len1 - j - 1] < '9')
{
add1[len1 - j - 1]++;
break;
}
}
}

}
result[maxLen - i] = 48 + a;
}
l++;
printf("Case %d:\n", l);
printf("%s + %s = ", add1print, add2print);
if(result[0] != '0')
printf("%c", result[0]);
for(k = 1; k < strlen(result); k++)
printf("%c", result[k]);
if(n != 1)
printf("\n\n");
else
printf("\n");
n--;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: