2017网易秋招--5、数字翻转

题目描述:

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少? 
输入描述:
输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。
 
 
输出描述:
输出rev(rev(x) + rev(y))的值
 
输入例子:
123 100
 
输出例子:
223
思路:先求出数字包含的位数。然后按从个位往前求每一位;求出那一位需要*10的个数就是len-i-1个,然后求result
 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4  
 5 int Rev(int x)
 6 {
 7     int num = x;
 8     int len = 0;
 9     int c = 0;
10     int result = 0;
11     while(num)
12     {
13         num/=10;
14         len++;
15     }
16     num = x;
17     for(int i=0;i<len;i++)
18     {
19         c = num%10;
20         for(int j=i+1;j<len;j++)
21         {
22             c*=10;
23         }
24         result += c;
25         num/=10;
26     }
27     return result;
28 }
29 int main()
30 {
31     int x;
32     int y;
33     while(cin>>x>>y)
34     {
35         cout<<Rev(Rev(x)+Rev(y))<<endl;
36     }
37 }
原文地址:https://www.cnblogs.com/qqky/p/6796028.html