反置数

问题描述

一个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数是5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。

输入格式

输入只有一行,包括两个整数,中间用空格隔开。

输出格式

输出只有一行,即相应的结果。

样例输入

435 754

样例输出

199



分析思路

435 的反置数 = 5(10^2) + 3(10^1) + 4

写一个函数处理,分别调用即可。

实现代码

#include <iostream>
#include <cmath>

int reserve(int num, int len)
{
    int sum = 0;
    for(int i = 0, j = len - 1; i < len; i++, j--)
    {
        int temp = num % (int)pow(10, i + 1) / pow(10, i);
        sum += (temp * pow(10, j));
    }
    return sum;
}

int getlen(int num)
{
    int len = 0;
    while(num > 0)
    {
        num /= 10;
        len++;
    }
    return len;
}

int main()
{
    int n, m;
    std::cin >> n >> m;
    
    int sum = reserve(n, getlen(n)) + reserve(m, getlen(m));
    std::cout << reserve(sum, getlen(sum));
    
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/coolcpp/p/number-reserve.html