1.#
点击查看考点
数字拆分 (用 std::string
或 std::stringstream
可轻松解决)
警告
原文是英文.
从 1 到 10000 中找到所有符合要求的数: 平方后拆成两个数 (好像是随意拆, 有一种符合就行) 相加后等于原来的数.
点击查看解答参考
"难点" 在于拆分数字和拼接数字, 利用字符串 std::string
相关功能 (含 C++11 才提供的 std::to_string
和 std::stoi
) 可简单完成.
1#include <string>
2
3std::string string = std::to_string(1234); // "1234"
4std::string substr = std::substr(/*pos = */1, /*count = */2); // "23"
5int value = std::stoi(substr); // 23
提示
2023 年转专业考试时存在部分考试机房只安装了 VS 2010, 可能没有这两个函数, 则可以用 std::stringstream
进行.
1#include <cstdlib>
2#include <sstream>
3#include <string>
4
5auto stoi(std::string const& string) -> int {
6 int value;
7 std::stringstream ss(string);
8 ss >> value;
9 return value;
10}
11
12auto to_string(int value) -> std::string {
13 std::stringstream ss;
14 ss << value;
15 return ss.str();
16}