牛客网-数字翻转(网易)
题目描述
对于一个整数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))的值
示例1
输入
123 100
输出
223
代码如下:
//思路:将x,y当做是字符串输入,分别对其翻转,然后将字符串类型转化为整型 //然后将得到的和进行翻转,因为涉及到翻转后第一位为0的情况,所以不能直接用string类型翻转 //将每一位保存到一个容器里面,然后计算结果 #include<iostream> #include<string> #include<algorithm> #include<vector> #include<math.h> using namespace std; int main(){ string x,y; cin>>x>>y; reverse(x.begin(),x.end()); reverse(y.begin(),y.end()); int z=stoi(x)+stoi(y); //将和转化为int类型 int num; vector<int> vec; while(z){ num=z%10; vec.push_back(num); z/=10; } int res=0,n=vec.size()-1; for(int i=0;i<=n;++i){ res+=vec[i]*pow(10,n-i); //对于每一位,乘以10的几次方 } cout<<res<<endl; system("pause"); return 0; }