#C1027. [CSP-J 2022T2] 解密

[CSP-J 2022T2] 解密

题目描述

给定正整数 kk,有 kk 次询问。每次询问给定三个正整数 ni,di,ein_i, d_i, e_i,请你求出两个正整数 pi,qip_i, q_i,满足 ni=pi×qin_i = p_i \times q_i,且 ei×di=(pi1)(qi1)+1e_i \times d_i = (p_i - 1)(q_i - 1) + 1

如果存在解,输出 pi,qip_i, q_i(保证 piqip_i \le q_i);否则输出 NO

输入格式

第一行一个正整数 kk

接下来 kk 行,每行三个正整数 ni,di,ein_i, d_i, e_i

输出格式

kk 行。对于每次询问,若存在解,输出两个正整数 pi,qip_i, q_i,中间用一个空格隔开;否则输出 NO

样例

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
2 385
NO
NO
NO
11 78
3 241
2 286
NO
NO
6 88

数据范围与提示

  • 对于 100%100\% 的数据:1k1051 \le k \le 10^51ni10181 \le n_i \le 10^{18}1ei×di10181 \le e_i \times d_i \le 10^{18}
  • m=ne×d+2m = n - e \times d + 2,保证 1m1091 \le m \le 10^9
  • 提示:由 e×d=(p1)(q1)+1e \times d = (p-1)(q-1)+1n=pqn = pq 可推出 p+q=ne×d+2=mp+q = n - e \times d + 2 = m,再利用一元二次方程求根公式判断是否有正整数解。