[NOIP2011 普及组] 数字反转
题目描述
给定一个整数 $N$,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 $N$。
输出格式
一个整数,表示反转后的新数。
样例 #1
样例输入 #1
123
样例输出 #1
321
样例 #2
样例输入 #2
-380
样例输出 #2
-83
提示
【数据范围】
$-1,000,000,000\leq N\leq 1,000,000,000 $。
noip2011 普及组第一题
思路
如果输入0直接输出,否则输出符号,去除多余的0,倒序输出。
AC代码
#include <iostream>
#include <vector>
#include <iostream>
#include <sstream>
#define AUTHOR "HEX9CF"
using namespace std;
int main()
{
string str;
char ch;
vector<int> v;
getline(cin, str);
if(str == "0"){
cout << str << endl;
return 0;
}
stringstream ss;
ss << str;
while (ss >> ch)
{
if ('-' == ch)
{
putchar('-');
}
else
{
v.push_back(ch - '0');
}
}
vector<int>::reverse_iterator rit = v.rbegin();
for(;rit != v.rend(); rit++){
if(0 != *rit){
break;
}
}
for(;rit != v.rend(); rit++){
cout << *rit;
}
return 0;
}