寻找倍数

解题思路

  1. 问题分析:题目要求在区间[A,B]内找到第一个能被C整除的数,如果存在则输出该数,否则输出-1。
  2. 关键点
    • 需要遍历区间内的每个数,检查是否能被C整除
    • 找到第一个满足条件的数后立即返回,保证效率
    • 如果遍历完整个区间都没有找到,则返回-1
  3. 算法选择:直接遍历法是最简单直观的解决方案,由于题目中数据范围较小(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;
}

代码特点说明

  1. 简洁高效:直接遍历区间,找到第一个解就立即返回,避免不必要的计算
  2. 边界处理:自动处理了A=B的情况以及C=1的特殊情况
  3. 时间复杂度:最坏情况下O(B-A),在题目给定的数据范围内完全够用
  4. 空间复杂度:O(1),只使用了固定数量的变量
posted @ 2025-05-13 14:34  季风起  阅读(5)  评论(0)    收藏  举报