背景
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
-
- 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;
- }

评论记录:
回复评论: