1 条题解
-
0
📝 题目大意
定义一个三位正整数为"326-like number",当其百位数字 × 十位数字 = 个位数字。给定 (),求不小于 的最小 326-like number。
💡 解题思路
- 题目分析: 的范围在 ,最大答案不超过 (三位数范围内),数据量极小,可以直接暴力枚举。
- 算法推导:
- 定义函数
is326Like(x),提取百位a = x / 100、十位b = (x / 10) % 10、个位c = x % 10,判断a * b == c即可。 - 从
x = N开始向上枚举到999,遇到第一个满足条件的x就输出并break。由于题目保证有解,最坏情况下 (不行),但 ()满足条件,因此必能在 内找到答案。
- 定义函数
- 边界与细节:
- 当 本身已是 326-like number 时直接输出 (如样例 2)。
- 上界设为 即可覆盖所有可能答案,无需担心越界。
⏱️ 复杂度分析
- 时间复杂度:,即最多枚举约 个数,常数级别。
- 空间复杂度:,仅使用常数个变量。
💻 标准代码 (C++)
#include <iostream> using namespace std; // 判断一个三位数是否为 326-like number bool is326Like(int x) { int a = x / 100; // 百位数字 int b = (x / 10) % 10; // 十位数字 int c = x % 10; // 个位数字 return a * b == c; // 百位 × 十位 == 个位 } int main() { int N; cin >> N; // 从 N 开始向上枚举,找到第一个 326-like number for (int x = N; x <= 999; x++) { if (is326Like(x)) { cout << x << endl; break; // 找到即停止 } } return 0; }
- 1
信息
- ID
- 741
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者