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