8 条题解

  • -1
    @ 2024-8-27 17:36:14

    题解分析

    问题描述

    给定五个正整数 nn, mm, aa, bb, cc,其中 b=nab = \lfloor \frac{n}{a} \rfloorc=mbc = \lfloor \frac{m}{b} \rfloor。已知 aacc 的值,求出一个合法的 bb 的值,或者报告不存在合法的 bb 的值。

    解题思路

    根据题目描述,我们有以下两个等式:

    b=nab = \lfloor \frac{n}{a} \rfloor c=mbc = \lfloor \frac{m}{b} \rfloor

    由第一个等式,我们可以推断出 abna \cdot b \leq n。由第二个等式,我们可以推断出 bcmb \cdot c \geq m。结合这两个不等式,我们可以得出 bb 应该满足 abca \leq b \leq c

    解决方案

    我们可以直接检查 cc 是否满足条件。如果 cc 满足 acca \leq c \leq c,那么 cc 就是一个合法的 bb 值。否则,不存在合法的 bb 值。

    代码实现

    以下是使用 C++ 实现的代码片段:

    #include <iostream>
    using namespace std; 
     
    int main() {
        int t; 
        cin >> t; 
        while(t--) { 
            long long a, c;
            cin >> a >> c; 
            if(a <= c && a / (a / c) == c) cout << c << endl; 
            else cout << -1 << endl; 
        }
        return 0; 
    } 
    

    时间复杂度分析:

    这个解决方案的时间复杂度是 ,因为它只需要常数时间来处理每个测试用例。这使得它非常适合处理大量的测试数据。

    信息

    ID
    14
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    804
    已通过
    221
    上传者