题目分析
这道题考察的是对整数中特定数字的处理。虽然输入是一个整数,但直接按位处理或者转为字符串处理都是可行的思路。考虑到'替换'操作的特性,将数字视为字符串往往比数学取模运算更直观。
Alice 不喜欢 4,喜欢 8,这意味着我们需要遍历输入的每一位,遇到 4 就变成 8,其他保持不变。
解题思路
在 C++ 中,我们可以利用 std::string 来存储输入的数字。这样不仅能方便地访问每一位字符,还能直接通过循环进行替换操作。相比使用 while 循环不断取余和除法,字符串方法在处理整体替换逻辑上更加简洁。
具体步骤如下:
- 读取输入为字符串。
- 遍历字符串中的每个字符。
- 如果当前字符是 '4',则修改为 '8'。
- 输出修改后的字符串。
代码实现
#include <iostream>
#include <string>
using namespace std;
int main() {
// 优化输入输出效率
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
if (cin >> s) {
for (char &c : s) {
if (c == '4') {
c = '8';
}
}
cout << s << endl;
}
return 0;
}
关键点说明
这里使用了引用 char &c 来遍历字符串,这样可以直接修改原字符串的内容,无需额外创建新变量。对于 C++ 初学者来说,理解引用的作用域和内存操作是进阶的关键。另外,输入范围 0 ≤ A ≤ 10^9 保证了标准 int 类型足够存储数值,但作为字符串处理完全不受位数限制,扩展性更好。


