• 2022 CCF CSP-J2 解密


    给定一个正整数 k k k,有 k k k 次询问,每次给定三个正整数 n i n_i ni, e i e_i ei, d i d_i di,求两个正整数 p i , q i p_i,q_i pi,qi,使 n i = p i × q i n_i = p_i × q_i ni=pi×qi e i × d i = ( p i − 1 ) ( q i − 1 ) + 1 e_i × d_i = (p_i − 1)(q_i − 1) + 1 ei×di=(pi1)(qi1)+1

    输入格式
    第一行一个正整数 k k k,表示有 k k k 次询问。
    接下来 k k k行,第 i 行三个正整数 n i , d i , e i n_i, d_i, e_i ni,di,ei
    输出格式
    输出 k k k 行,每行两个正整数 p i , q i p_i, q_i pi,qi 表示答案。
    为使输出统一,你应当保证 p i ≤ q i p_i ≤ q_i piqi

    如果无解,请输出 NO

    数据范围
    以下记 m = n − e × d + 2 m = n − e × d + 2 m=ne×d+2
    保证对于 100 % 100\% 100% 的数据, 1 ≤ k ≤ 1 0 5 1 ≤ k ≤ 10^5 1k105,对于任意的 1 ≤ i ≤ k 1 ≤ i ≤ k 1ik 1 ≤ n i ≤ 1 0 18 1 ≤ n_i ≤ 10^{18} 1ni1018 1 ≤ e i × d i ≤ 1 0 18 1 ≤ e_i × d_i ≤ 10^{18} 1ei×di1018 1 ≤ m ≤ 1 0 9 1 ≤ m ≤ 10^9 1m109

    QQ截图20221107141520.png

    输入样例:

    10
    770 77 5
    633 1 211
    545 1 499
    683 3 227
    858 3 257
    723 37 13
    572 26 11
    867 17 17
    829 3 263
    528 4 109
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出样例:

    2 385
    NO
    NO
    NO
    11 78
    3 241
    2 286
    NO
    NO
    6 88
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    C++代码

    #include
    typedef long long LL;
    
    using namespace std;
    
    int main() {
        int tt;
        cin >> tt;
        
        while(tt --) {
            LL n, c, d, p, q;
            //n = p * q
            //c * d = p * q - p - q + 2
            //c * d = n - p - q + 2
            //t = c * d
            //p + q = n - t + 2
            //p * q = n
            cin >> n >> c >> d;
            LL t = c * d;
            LL s = n - t + 2;//p + q
            LL x = s * s;//(p + q) ^ 2
            LL y = x - 4 * n;//(p - q) ^ 2
            
            LL z = LL(sqrt(y));//|p - q|
            if(z * z != y) cout << "NO" << '\n';
            else {
                p = (s + z) / 2;
                q = (s - z) / 2;
                if(p > q) swap(p, q);
                cout << p << " " << q << '\n';
            }
        }
        
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    学习c#的第十五天
    性能小课堂:Jmeter录制手机app脚本!
    Linux Docker 安装 Elasticsearch Logstash Kibana
    聊一聊的有限状态机
    KdMapper扩展实现之REALiX(hwinfo64a.sys)
    nginx + nginx-rtmp-module + springboot 搭建直播流服务器实现推流、拉流实时直播功能
    QT 实现mysql的长连接
    Power Automate-调用API
    什么是web3.0
    GrennPlum存储过程实战
  • 原文地址:https://blog.csdn.net/AlberTesla/article/details/127762078