Vijos P1756 数字反转【进制】
背景
noip2011 NO.1
描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
格式
输入格式
输入共1 行,一个整数N。
输出格式
输出共1 行,一个整数,表示反转后的新数。
样例1
样例输入1
123
样例输出1
321
样例2
样例输入2
-380
样例输出2
-83
限制
1s
提示
【数据范围】
-1,000,000,000 ≤ N ≤ 1,000,000,000 。
来源
noip 2011
问题链接: Vijos P1756 数字反转
问题分析:
这个问题是一个进制计算问题。
一个数除以10的余数即为那个数的个位。不断取出个位和右移,并且将取出的个位重新拼装成一个整数即可。需要注意负数的情况,幸好负数的余数是负数。
程序说明:
(略)
题记:
进制是计算中绕不开的话题。
参考链接:(略)
AC的C++程序如下:
#include <iostream> using namespace std; const int BASE10 = 10; int reverse(int n) { int ans = 0; while(n) { ans *= BASE10; ans += n % BASE10; n /= BASE10; } return ans; } int main() { int n; cin >> n; cout << reverse(n) << endl; return 0; }