2025 是个神奇的数字,因为它是由两个数 20 和 25 拼接而成,而且 $2025 = (20 + 25)^2$。小杨决定写个程序找找小于 $N$ 的正整数中共有多少这样神奇的数字。下面程序横线处应填入的是( )。
#include <string>
int count_miracle(int N) {
int cnt = 0;
for (int n = 1; n * n < N; n++) {
int n2 = n * n;
std::string s = std::to_string(n2);
for (int i = 1; i < s.length(); i++)
if (s[i] != '0') {
std::string s1 = s.substr(0, i);
std::string sr = s.substr(i);
int n1 = std::stoi(s1);
int nr = std::stoi(sr);
if (__________) // 在此处填入选项
cnt++;
}
}
return cnt;
}根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】字符串拼接|数字拆分|条件判断
本题落在 GESP 八级第 10 章“数字与算法”,核心就是考字符串拼接与数字拆分。命题人把题目放在八级,卡住的是“字符串转数字再组合”这一类容易想成数学运算的弱点。绝大多数考生会忽略拼接的本质,直接套用公式,导致误选。