牛客网NC22000:数字反转之-三位数
牛客网NC22000:数字反转之-三位数
🔍 题目描述
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32M,其他语言64M
📝 输入输出说明
输入描述:
- 输入一个3位整数n (100 ≤ n ≤ 999)
输出描述:
- 一个正整数(反转后的结果)
示例:
输入: 120
输出: 021
💡 解题思路
这是一道简单的数字处理问题,核心在于如何提取一个整数的各个位上的数字。对于三位数,我们可以使用取模和整除运算来分别提取个位、十位和百位:
- 提取个位数:对原数取模10,即
n % 10
- 提取十位数:先对原数取模100得到后两位,再整除10,即
(n % 100) / 10
- 提取百位数:直接整除100,即
n / 100
最后按照题目要求的顺序输出这三个数字即可。
📊 代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){int n,a,b,c,d;cin>>n;a=n%10; // 提取个位数b=n%100; // 获取后两位数字(十位和个位)c=b/10; // 提取十位数d=n/100; // 提取百位数cout<<a<<c<<d<<endl; // 按个位、十位、百位的顺序输出
}
🔍 代码详解
-
变量定义:
n
:输入的三位数a
:存储个位数字b
:存储后两位数字(十位和个位)c
:存储十位数字d
:存储百位数字
-
数位提取:
a=n%10
:对n取模10,得到个位数字b=n%100
:对n取模100,得到后两位数字(十位和个位)c=b/10
:将后两位数字整除10,得到十位数字d=n/100
:将n整除100,得到百位数字
-
结果输出:
cout<<a<<c<<d<<endl
:按照题目要求的顺序(个位、十位、百位)输出结果
🧮 示例分析
以输入 120
为例:
a = 120 % 10 = 0
(个位)b = 120 % 100 = 20
(后两位)c = 20 / 10 = 2
(十位)d = 120 / 100 = 1
(百位)- 输出:
0
+2
+1
=021
⏱️ 复杂度分析
- 时间复杂度: O(1) - 只进行了固定次数的基本运算
- 空间复杂度: O(1) - 只使用了固定数量的变量
📌 总结要点
- 这道题展示了如何使用取模和整除运算提取整数的各个位上的数字
- 需要注意的是,C++输出时不会保留前导零,所以输出021实际显示为21,但题目判定是正确的
- 解决此类问题的关键是掌握数位分解的基本技巧
🔗 相关知识点
- 整数的取模运算(
%
) - 整数的整除运算(
/
) - 数位分解技巧
这道题虽然简单,但很好地考察了对基本运算的理解和应用,是编程入门的经典题型之一。