Bailian4029 数字反转进制(POJ NOI0105-29)

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bailian4029 数字反转进制(POJ NOI0105-29)相关的知识,希望对你有一定的参考价值。

问题链接POJ NOI0105-29 数字反转

4029:数字反转
总时间限制: 1000ms 内存限制: 65535kB
描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2) 。

输入
输入共 1 行,一个整数 N。
输出
输出共 1 行,一个整数,表示反转后的新数。
样例输入
样例 #1:
123

样例 #2:
-380
样例输出
样例 #1:
321

样例 #2:
-83
提示
-1,000,000,000 ≤ N ≤1,000,000,000。

问题链接Bailian4029 数字反转
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
  用模除运算从整数中逐次取出最低位输出,可以实现数字反转。需要注意的是,原数的地位的0不输出,如果原数是0则需要输出0。可以写一个函数来反转数字,也可以直接计算输出结果。
  还有一点需要说明的是,对于负数,模除的结果是负数,其和也是负数,所以程序代码中不需要考虑负数问题。
程序说明:(略)
参考链接
旧版:Bailian4029 数字反转【进制】(POJ NOI0105-29)
Vijos P1756 数字反转
题记:(略)

AC的C语言程序(直接计算)如下:

/* Bailian4029 数字反转 */

#include <stdio.h>

int main(void)
{
    int n, ans = 0;
    scanf("%d", &n);
    while (n)
        ans *= 10, ans += n % 10, n /= 10;
    printf("%d\\n", ans);

    return 0;
}

AC的C语言程序(反转函数)如下:

/* Bailian4029 数字反转 */

#include <stdio.h>

#define BASE10 10

int reverse(int n)
{
    int ret = 0;
    while(n) {
        ret *= BASE10;
        ret += n % BASE10;
        n /= BASE10;
    }
    return ret;
}

int main(void)
{
    int n;

    scanf("%d", &n);

    printf("%d\\n", reverse(n));

    return 0;
}

以上是关于Bailian4029 数字反转进制(POJ NOI0105-29)的主要内容,如果未能解决你的问题,请参考以下文章

Bailian2734 十进制到八进制入门(POJ NOI0113-45)

Bailian2735 八进制到十进制入门(POJ NOI0113-46)

POJ 2443 Set Operation 题解

POJ 2443 Set Operation 题解

Bailian2973 Skew数进制

动态规划:熟练度练习(POJ 1458最佳加法表达式bailian2755POJ3624bailian1088)