资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。例如,如果用户输入:435和754,则输出结果为199。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
输入:
435 754
输出:
199
这道题其实用字符串与数字相互转换逆来逆去就行了,我代码如下,但是吧,蓝桥云课不允许c++11特性,所以这些函数是用不了的,但我记得蓝桥杯更新了c++11特性的呀,不过无所谓了,用stringstream流吧。
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
cin>>a>>b;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int sum=stoi(a)+stoi(b);
string temp=to_string(sum);
reverse(temp.begin(),temp.end());
cout<<stoi(temp);
}
用stringstream,注意每次转完要clear一下,不然有残留的数据影响:
#include<bits/stdc++.h>
using namespace std;
int main(){
string a,b;
stringstream ss;
cin>>a>>b;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int sum,anum,bnum;
ss<<a;
ss>>anum;
ss.clear();
ss<<b;
ss>>bnum;
ss.clear();
sum=anum+bnum;
ss<<sum;
string temp;
ss>>temp;
ss.clear();
reverse(temp.begin(),temp.end());
ss<<temp;
ss>>sum;
cout<<sum;
return 0;
}