牛客网-数字翻转(网易)

题目描述

对于一个整数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;
}
原文地址:https://www.cnblogs.com/rgly/p/7425151.html