POJ 1504 Adding Reversed Numbers…

题意:给出几组数据,每组数据2个数,要求输出这两个数的回文的和的回文。

分析:自己写了一个回文的结构体。肯定要通过循环实现,首先要分析要从个位数开始分析起,给位用last存,然后,存完个位,原先的数据要去掉个位数,即num/10,用一个新的数据reverse_num存储乘10相加的数据。

以245为例,第一步,个位5,去掉个位后24,reverse_num=5

           第二步,个位4,去掉个位后2,reverse_num=5*10+4=54

           第三步,个位2,reverse_num=54*10+2=542

就是这么一个道理。

后来见过一个更简洁的代码,主要就是循环判断上简洁了好多,自己的代码稍微有点罗嗦了,学习下

int reverse(int num)

{

int gewei=0;

int new_num=0;

while(num!=0)

{

gewei=num;

new_num=new_num*10+gewei;

num=num/10;

}

return new_num;

}


贴一下代码:(248k,79ms)

C++语言:
#include<iostream>
using namespace std;
int reverse( int num)
{
    int   last = 0;
    int reverse_num = 0;
    if( num < 10) reverse_num = num;
    else
    {
        while( true)
        {
            last = num % 10;
            num = num / 10;
            reverse_num = 10 * reverse_num + last;
            if( num < 10)
            {
                reverse_num = 10 * reverse_num +   num;
                break;
            }
        }
    }
    return reverse_num;
}

int main()
{
    int t;
    int a ,b , sum;
    cin >> t;
    while( t --)
    {
        cin >> a >>b;
        a = reverse( a);
        b = reverse(b);
        sum = a +b;
        cout << reverse( sum) << endl;
    }
}

你可能感兴趣的:(POJ 1504 Adding Reversed Numbers…)