赞
踩
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(如:输入-380,输出-83)。
输入共1行,一个整数N。
输出共1行,一个整数,表示反转后的新数。
123
321
-1,000,000,000<=N<=1,000,000,000。
NOIP2011 普及组 reverse
--------------------------------------------------------------------------------------------------------------------------------
小坑:
注意用while(cin>> )读入字符串,否则会PE。
思路:
首先利用reverse将字符串反转;如果原字符串的数字是负数,那么反转后的最后一位就是负号。此时去掉末尾负号并直接输出负号。
(特殊情况:
考虑到“10000”这种反转后字符串存在多个零的情况,要顺次删除;
如果仅仅输入的是0则不能删去。)
ac代码:
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- string x;
- while(cin>>x)
- {
- reverse(x.begin(),x.end());//反转初始字符串
-
- if(x[x.size()-1]=='-')//如果是负数需要将负号删除
- {
- x.erase(x.size()-1,1);
- cout<<"-";
- }
- int i=0;
- int lenx=x.size();
- while(x[i]=='0'&&lenx>1)//如果末尾有多个0则依次删除,如果输入为0则不删除
- x.erase(0,1);
-
- cout<<x<<endl;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。