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






posted on 2017-05-10 07:28  海岛Blog  阅读(128)  评论(0编辑  收藏  举报

导航