#6926. CSP-J 2022 解密(decode) T2

CSP-J 2022 解密(decode) T2

解密(decode)

题目描述

给定一个正整数 k,有 k 次询问。

每次给定三个正整数 nᵢ、eᵢ、dᵢ,求两个正整数 pᵢ、qᵢ,使得:

  • nᵢ = pᵢ × qᵢ;
  • eᵢ × dᵢ = (pᵢ - 1)(qᵢ - 1) + 1。

输入格式

从文件 decode.in 中读入数据。

第一行包含一个正整数 k,表示有 k 次询问。

接下来 k 行,第 i 行包含三个正整数 nᵢ、dᵢ、eᵢ。

输出格式

输出到文件 decode.out 中。

输出 k 行,每行两个正整数 pᵢ、qᵢ,表示答案。

为使输出统一,你应当保证 pᵢ ≤ qᵢ。

如果无解,请输出 NO。

样例 1

输入

10
770 77 5
633 12 11
545 1 499
683 3 227
858 3 257
723 37 13
572 26 11
867 17 17
829 3 263
528 4 109

输出

2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88

样例 2

见选手目录下的 decode/decode2.in 与 decode/decode2.ans。

样例 3

见选手目录下的 decode/decode3.in 与 decode/decode3.ans。

样例 4

见选手目录下的 decode/decode4.in 与 decode/decode4.ans。

数据范围

以下记:

m = n - e × d + 2

对于所有测试数据,保证:

  • 1 ≤ k ≤ 10⁵;
  • 对于任意的 1 ≤ i ≤ k,均有:
    • 1 ≤ nᵢ ≤ 10¹⁸;
    • 1 ≤ eᵢ × dᵢ ≤ 10¹⁸;
    • 1 ≤ m ≤ 10⁹。
测试点编号 k ≤ n ≤ m ≤ 特殊性质
1 10³ 10³ 保证有解
2 无
3 10⁹ 6 × 10⁴ 保证有解
4 无
5 10⁹ 保证有解
6 无
7 10⁵ 10¹⁸ 保证若有解,则 p = q
8 保证有解
9、10 无