题目描述:
对于一个整数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 }