1 条题解
-
0
📝 题目大意
给定一个 的整数 ,输出其十位和个位数字(即末尾两位),若十位为 也需保留(如 输出
01)。💡 解题思路
- 题目分析:,只有三位数。核心是取后两位并保留前导零。
- 算法推导:
- 若用整数取模
N % 100,当结果为一位数(如 、)时需额外用printf("%02d")格式化补零,比较麻烦。 - 直接以 字符串 读入,则天然保留前导零。对于三位数,后两位即
s[1]s[2](下标从 0 开始);若输入恰好是两位数(如边界情况),后两位即s[0]s[1]。
- 若用整数取模
- 边界与细节:
- 时,
s[1]s[2]为"00",正确。 - 时,输出
"01"而非"1",字符串方案天然满足。 - 代码中
else if分支覆盖了可能出现的两位数输入,确保鲁棒性。
- 时,
⏱️ 复杂度分析
- 时间复杂度:,仅读取字符串并输出两个字符。
- 空间复杂度:,存储一个长度不超过 的字符串。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; // 读取整个整数作为字符串,便于直接取子串,天然处理前导零问题 if(s.size() == 3) // N 是三位数(题目保证 100 ≤ N ≤ 999) cout << s[1] << s[2]; // 输出后两位(十位和个位) else if(s.size() == 2) // 鲁棒处理:若输入为两位数,也输出后两位 cout << s[0] << s[1]; return 0; }
- 1
信息
- ID
- 608
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者