牛客網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,但題目判定是正確的
- 解決此類問題的關鍵是掌握數位分解的基本技巧
🔗 相關知識點
- 整數的取模運算(
%
) - 整數的整除運算(
/
) - 數位分解技巧
這道題雖然簡單,但很好地考察了對基本運算的理解和應用,是編程入門的經典題型之一。