题目简述:给两个数字,先反转,求和,再翻转。
解题思路:
1、数字反转首先想到的是就是一位一位的计算。即求余与求和。
2、利用结构体对过程中的数据进行储存。
3、结构体内定义a,c,sum。c用来储存每个数字的最后一位,即逐步取余得到的数字,sum用来计算数字反转后的和。
4、对反转过后的数字进行求和。
5、和上面思路一样,再按位进行反转,输出反转过后的数字。
源代码:
#include <bits/stdc++.h>
using namespace std;
struct abc
{
int a,c,sum;
}e[2];
int main()
{
int n,i;
cin>>n;
for (i=0;i<n;i++)
{
cin>>e[0].a>>e[1].a;
e[0].sum=0;
e[1].sum=0;
int add,adc,sum1=0;
while (e[0].a)
{
e[0].c=e[0].a%10;
e[0].sum=e[0].sum*10+e[0].c;
e[0].a=e[0].a/10;
}
while (e[1].a)
{
e[1].c=e[1].a%10;
e[1].sum=e[1].sum*10+e[1].c;
e[1].a=e[1].a/10;
}
add=e[0].sum+e[1].sum;
while (add)
{
adc=add%10;
sum1=sum1*10+adc;
add=add/10;
}
cout<<sum1<<endl;
}
return 0;
}
解题感想:本来考虑是否要考虑0的问题,因为反转过后求和的过程中0*10=0,所以又考虑到可以先*10再加上余数。这个题目看起来不难,缕清思路用差不多的思路就可以解答。觉得用的时间还不算多,感觉还是不错的。