1 条题解

  • 0
    @ 2024-11-16 18:26:55

    首先,我们注意到2013的倍数在十进制下的最后三位数字是由2013的最后三位数字决定的,即013。因此,我们需要找到满足条件的最小正整数m和n,使得m和n的十进制表示中最后三位数字与2013的倍数相同。

    ‌具体步骤如下‌:

    ‌确定2013的倍数最后三位数字的规律‌:

    2013的倍数在十进制下的最后三位数字是013。 要使2013m和2013n的最后三位数字相同,m和n必须是2013的某个倍数的整数倍。 ‌寻找满足条件的最小正整数m和n‌:

    从1开始逐个检查每个整数是否满足条件。 定义一个变量来记录当前找到的最小满足条件的m和n。 每次检查一个数时,计算其除以2013的余数,如果余数为0,则该数是2013的倍数。 继续检查下一个数,直到找到满足条件的最小正整数m和n。

    #include <iostream>
    using namespace std;
    
    int main() {
        int m = 0, n = 0; // 初始化m和n为0
        bool found = false; // 标记是否找到满足条件的m和n
        int target = 2013; // 目标值,用于检查最后三位数字是否相同
        int temp = 0; // 临时变量,用于检查每个数是否满足条件
        while (!found) {
            temp++; // 检查下一个数
            if (temp % 1000 == target % 1000) { // 检查最后三位数字是否相同
                if (temp % 2013 == 0) { // 检查是否是2013的倍数
                    if (!found || temp < m) { // 如果找到新的最小值,更新m和n
                        m = n;
                        n = temp;
                    }
                    found = true; // 找到满足条件的m和n,跳出循环
                } else if (temp > m) { // 如果不是倍数,但比当前m大,更新n为temp
                    n = temp;
                }
            }
        }
        cout << "最小正整数m和n分别为: " << m << " 和 " << n << endl; // 输出结果
        return 0;
    }
    
    

    信息

    ID
    531
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    递交数
    7
    已通过
    2
    上传者