[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 普及组第一题
思路
负数输出符号,通过取余求每一位来倒序输出,这样做比字符串法更简洁。
AC代码
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;
int main() {
int n;
int r;
cin >> n;
if(n < 0){
putchar('-');
n *= -1;
}
r = n % 10;
for (int i = n, m = 10; i > 9; i /= 10)
{
r = r * 10 + (n % (10 * m) - n % m) / m;
m *= 10;
}
cout << r << endl;
return 0;
}