解题思路
- 问题分析:题目要求在区间[A,B]内找到第一个能被C整除的数,如果存在则输出该数,否则输出-1。
- 关键点:
- 需要遍历区间内的每个数,检查是否能被C整除
- 找到第一个满足条件的数后立即返回,保证效率
- 如果遍历完整个区间都没有找到,则返回-1
- 算法选择:直接遍历法是最简单直观的解决方案,由于题目中数据范围较小(1 ≤ A ≤ B ≤ 1000),这种方法完全可行。
代码注释
#include<bits/stdc++.h> // 包含所有标准库头文件,方便竞赛编程
using namespace std;
int main() {
// 定义并读取三个输入变量
int a, b, c; // a:区间起点,b:区间终点,c:要找的倍数
cin >> a >> b >> c;
// 遍历区间[a,b]中的每一个数
for(int i = a; i <= b; i++) {
// 检查当前数是否是c的倍数
if(i % c == 0) {
// 如果是,输出该数并立即结束程序
cout << i;
return 0; // 直接返回,保证只输出第一个满足条件的数
}
}
// 如果循环结束仍未找到满足条件的数,输出-1
cout << -1;
return 0;
}
代码特点说明
- 简洁高效:直接遍历区间,找到第一个解就立即返回,避免不必要的计算
- 边界处理:自动处理了A=B的情况以及C=1的特殊情况
- 时间复杂度:最坏情况下O(B-A),在题目给定的数据范围内完全够用
- 空间复杂度:O(1),只使用了固定数量的变量