倒序数

GitHub跳转原题关系图返回列表

把 n 的十进制表示整串反转后按字符串输出,反转后开头出现的 0 要原样保留。

OJ: roj

题目 ID: 1160

难度:入门

标签:python字符串递归输入输出

创建: 2026-09-29 21:25

更新: 2026-10-05 03:58

题目描述

输入一个非负整数(保证个位不为零),输出这个数的倒序数:把十进制表示整串反转后输出,反转后开头出现的 0 要原样保留。例如输入 123,输出 321。

思路

读入 n 的十进制表示存成字符串,从最后一个字符往前逐个输出就是倒序数。关键点是答案按数字串处理而不是数值:像 1234567890 这样末尾有 0 的输入,反转后开头的 0 必须原样打印,所以反转结果绝不能再转回整数。

参考代码

Python 版:

python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 21:25
# update_at: 2026-09-29 21:26

import sys


def solve() -> None:
    """读入唯一的非负整数,输出它的倒序数。"""
    n = int(sys.stdin.buffer.read())  # int() 自己会忽略行尾换行,不需要先 strip
    print(str(n)[::-1])               # 反转十进制数字串,末尾的 0 反转到最前面要原样输出


if __name__ == "__main__":
    solve()

C++ 版(同一算法):

cpp
/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-10-05 03:58
 * update_at: 2026-10-05 03:58
 */

// 倒序数:把 n 的十进制表示整串反转后输出。
// 答案是数字串而不是数值:反转后开头的 0 必须原样保留,
// 所以用字符串存结果,绝不能再转回整数输出。

#include <cstdio>
#include <cstring>

typedef long long ll;

char s[105]; // 存 n 的十进制表示,反转结果也放在这里(题面未给位数上限,105 足够)

int main() {
    scanf("%s", s);
    ll len = strlen(s);
    // 从最高位往低位倒着逐字符输出,即得到倒序数
    for (ll i = len - 1; i >= 0; i--) {
        printf("%c", s[i]);
    }
    printf("\n");
    return 0;
}