牛客网NC22000:数字反转之-三位数

牛客网NC22000:数字反转之-三位数

🔍 题目描述

在这里插入图片描述

时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32M,其他语言64M

📝 输入输出说明

输入描述:

  • 输入一个3位整数n (100 ≤ n ≤ 999)

输出描述:

  • 一个正整数(反转后的结果)

示例:

输入: 120
输出: 021

💡 解题思路

这是一道简单的数字处理问题,核心在于如何提取一个整数的各个位上的数字。对于三位数,我们可以使用取模和整除运算来分别提取个位、十位和百位:

  1. 提取个位数:对原数取模10,即 n % 10
  2. 提取十位数:先对原数取模100得到后两位,再整除10,即 (n % 100) / 10
  3. 提取百位数:直接整除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; // 按个位、十位、百位的顺序输出
}

🔍 代码详解

  1. 变量定义

    • n:输入的三位数
    • a:存储个位数字
    • b:存储后两位数字(十位和个位)
    • c:存储十位数字
    • d:存储百位数字
  2. 数位提取

    • a=n%10:对n取模10,得到个位数字
    • b=n%100:对n取模100,得到后两位数字(十位和个位)
    • c=b/10:将后两位数字整除10,得到十位数字
    • d=n/100:将n整除100,得到百位数字
  3. 结果输出

    • 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) - 只使用了固定数量的变量

📌 总结要点

  1. 这道题展示了如何使用取模整除运算提取整数的各个位上的数字
  2. 需要注意的是,C++输出时不会保留前导零,所以输出021实际显示为21,但题目判定是正确的
  3. 解决此类问题的关键是掌握数位分解的基本技巧

🔗 相关知识点

  • 整数的取模运算(%)
  • 整数的整除运算(/)
  • 数位分解技巧

这道题虽然简单,但很好地考察了对基本运算的理解和应用,是编程入门的经典题型之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值