题目描述
给定一个整数 N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 N。
输出格式
一个整数,表示反转后的新数。
样例 #1
样例输入 #1
123
样例输出 #1
321
样例 #2
样例输入 #2
-380
样例输出 #2
-83
提示
【数据范围】
-1,000,000,000 <= N <=1,000,000,000 。
noip2011 普及组第一题
首先需要想到用string来存放数字
第一步要判断输入的n是正数还是负数,第二步将n末尾的0全部删去,第三步反转然后输出
完整代码如下:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string n;
cin >> n;
string num = n;
bool flag = true;//标记是否是正数,正数为true
if (n[0] == '-')
{
num = n.substr(1, n.size() - 1);
flag = false;
}
//将末尾的零全部删除
while (num.size() >= 1 && num[num.size() - 1] == '0')
{
num.pop_back();
}
reverse(num.begin(), num.end());//反转
if (num.empty())
{
cout << 0;
}
else
{
if (flag)
{
cout << num;
}
else
{
cout << '-' << num;
}
}
return 0;
}