思路
大数加法,这道题的格式一直没控制好,PE了好长时间。
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char ans[110];
char num[110];
void reverse(char *str)
{
int len = strlen(str);
for(int i=0; i<len/2; i++)
swap(str[i], str[len-i-1]);
}
void add(char *str, char *num)
{
int i=0, temp=0;
for( ; str[i]&&num[i]; i++)
{
temp = str[i] + num[i] - '0' * 2 + temp;
str[i] = (temp%10) + '0';
temp /= 10;
}
if(!num[i]&&!str[i]&&temp) str[i] = temp + '0';
else if(!num[i])
{
for(; str[i]; i++)
{
temp = str[i] - '0' + temp;
str[i] = (temp%10) + '0';
temp /= 10;
}
if(temp) str[i] = temp + '0';
}
else
{
for(; num[i]; i++)
{
temp = num[i] - '0' + temp;
str[i] = (temp%10) + '0';
temp /= 10;
}
if(temp) str[i] = temp + '0';
}
}
void print(char *str)
{
reverse(str);
for(int i=0; str[i]; i++) printf("%c", str[i]);
printf("\n");
}
int main()
{
int t;
bool first = true;
scanf("%d", &t);
while(t--)
{
if(first) first = false;
else printf("\n");
memset(ans, 0, sizeof(ans));
while(true)
{
scanf("%s", num);
if(num[0]=='0') break;
reverse(num);
add(ans, num);
}
if(ans[0]=='\0') printf("0\n");
else print(ans);
}
return 0;
}