1 条题解
-
0
📝 题目大意
给定 8 个整数,判断是否同时满足三个条件:数列非严格单调递增、每个数都在 范围内、每个数都是 的倍数。全满足输出
Yes,否则输出No。💡 解题思路
- 题目分析:数据范围很小(,仅 8 个数),只需依次检查三个条件,任意一个不满足即可输出
No。 - 算法推导:
- 读入
S[0..7],设标志ok = true。 - 遍历每个元素,检查
S[i]是否在 内,以及S[i] % 25 == 0,任一不满足则ok = false并跳出。 - 再遍历前 7 个元素,检查
S[i] > S[i+1](单调性破坏),若存在则ok = false。 - 最后根据
ok输出Yes或No。
- 读入
- 边界与细节:
- 题目保证 ,但 的倍数校验 (
% 25) 天然覆盖了这一范围。 - 注意单调性是非严格递增(),判断时用
>取反。 - 三个条件检查顺序无关紧要,因为只要有一个不满足就输出
No。
- 题目保证 ,但 的倍数校验 (
⏱️ 复杂度分析
- 时间复杂度:,仅处理固定 8 个数。
- 空间复杂度:,使用固定大小的数组。
💻 标准代码 (C++)
#include <iostream> using namespace std; int main() { int S[8]; // 读入 8 个整数 for (int i = 0; i < 8; i++) { cin >> S[i]; } bool ok = true; // 检查条件 2(范围 [100, 675])和条件 3(25 的倍数) for (int i = 0; i < 8; i++) { if (S[i] < 100 || S[i] > 675) { ok = false; break; } if (S[i] % 25 != 0) { ok = false; break; } } // 检查条件 1(非严格单调递增) for (int i = 0; i < 7; i++) { if (S[i] > S[i + 1]) { ok = false; break; } } // 输出结果 if (ok) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; } - 题目分析:数据范围很小(,仅 8 个数),只需依次检查三个条件,任意一个不满足即可输出
- 1
信息
- ID
- 723
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者