您的位置:首页 > 其它

SPOJ42 - Adding Reversed Numbers (简单题)

2015-10-11 20:17 423 查看
题目链接

思路

题意真的很容易理解错呀……

就是给两个数,翻转后加和,然后再翻转后输出

用字符串加,不用翻转(从头开始加就是反的),直接加然后除掉前面的 0 输出就行

代码

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
char ans[20];
char num[20];

void add()
{
int tmp=0, i=0;
for(i=0; ans[i]&&num[i]; i++)
{
tmp = ans[i] + num[i] - 2*'0' + tmp;
ans[i] = tmp%10 + '0';
tmp /= 10;
}
if(ans[i])
{
for(; ans[i]; i++)
{
tmp = ans[i] - '0' + tmp;
ans[i] = tmp%10 + '0';
tmp /= 10;
}
}
else
{
for(; num[i]; i++)
{
tmp = num[i] - '0' + tmp;
ans[i] = tmp%10 + '0';
tmp /= 10;
}
}
if(tmp)
ans[i] = tmp + '0';
}
void print(char *str)
{
int i=0;
for(; str[i]=='0'; i++);
for(; i<str[i]; i++) printf("%c", str[i]);
printf("\n");
}
int main()
{
int n;
scanf("%d", &n);
while(n--)
{
memset(ans, 0, sizeof(ans));
memset(num, 0, sizeof(num));
scanf("%s%s", ans, num);
add();
print(ans);

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: