反向即三段取余直出:个位、十位、剩余高位依次逐段打印,逐段输出天然保留前导零,C 的向零截断让负数也直接成立。
OJ: roj
题目 ID: 1031
难度:入门
标签:输入输出数学python
创建: 2026-09-29 14:40
更新: 2026-10-04 23:00
题目描述
将一个三位数反向输出,例如输入
思路
把"反向"直译成三段取余公式:个位段 /、% 向零截断,负数时三段各带负号也直接成立。
参考代码
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 14:43
# update_at: 2026-09-29 14:43
import sys
def solve() -> None:
data = iter(map(int, sys.stdin.buffer.read().split()))
n = next(data) # 按整数读入,三段数位各自成项、逐项拼接
sign = -1 if n < 0 else 1 # C 的 / 与 % 向零截断,Python 的 // % 要手动补符号
m = abs(n)
ones = sign * (m % 10) # 个位:反向后的第 1 位
tens = sign * (m // 10 % 10) # 十位:反向后的第 2 位
rest = sign * (m // 100) # 更高位:作为整体原样接在末尾
print(f"{ones}{tens}{rest}") # 逐段打印,前导零自然保留(100 → 001)
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-04 23:00
* update_at: 2026-10-04 23:00
*/
#include <cstdio>
typedef long long ll;
ll n; // 输入的数(题面是三位数,逐段公式对更长输入与负数也成立)
int main() {
scanf("%lld", &n);
// "反向"直译成三段公式:个位段 n%10、十位段 (n/10)%10、剩余高位段 n/100
// 逐段打印天然保留前导零(100 -> 001)
// C 的 /、% 向零截断,负数时三段各带负号(-444 -> -4-4-4),无需额外处理
printf("%lld%lld%lld\n", n % 10, (n / 10) % 10, n / 100);
return 0;
}