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)