#P16829. [NWRRC 2022]Greatest Common Divisor

[NWRRC 2022]Greatest Common Divisor

题目描述

Gennady 正在学习用欧几里得算法计算两个正整数的最大公约数。

不幸的是,他有时会把整数除法运算符 div 与取余运算符 mod 混淆。例如:

$$37\mathbin{\mathrm{div}}10=3, \qquad 37\mathbin{\mathrm{mod}}10=7.$$

他最近写出了下面的“欧几里得算法”:

  1. 输入两个正整数 x,yx,y
  2. y>0y>0 时:
    • x=xdivyx=x\mathbin{\mathrm{div}}y
    • 交换 xxyy
  3. 输出 xx

如果把程序中的 div 换成 mod,它就是正确的欧几里得算法。但令人意外的是,即使存在这个错误,程序在某些输入上仍然会终止并输出真正的 gcd(x,y)\gcd(x,y)

给定整数 nn,考虑所有满足以下条件的有序对 (x,y)(x,y)

  • 1x,yn1\le x,y\le n
  • 上述错误算法会终止;
  • 算法输出恰好等于 gcd(x,y)\gcd(x,y)

按字典序排列所有合法有序对:

(x1,y1),(x2,y2),,(xk,yk).(x_1,y_1),(x_2,y_2),\ldots,(x_k,y_k).

也就是说,对任意 1i<k1\le i<k,要么 xi<xi+1x_i<x_{i+1},要么 xi=xi+1x_i=x_{i+1}yi<yi+1y_i<y_{i+1}

接下来给出 qq 个查询。对于每个查询 pip_i,输出第 pip_i 个合法有序对;若 pi>kp_i>k,则报告不存在。

输入格式

第一行包含两个整数 n,qn,q

接下来 qq 行,每行包含一个整数 pip_i

数据范围

1n,q2105,1\le n,q\le 2\cdot 10^5, 1pin2.1\le p_i\le n^2.

输出格式

对于每个查询:

  • 若至少存在 pip_i 个合法有序对,输出 xpix_{p_i}ypiy_{p_i}
  • 否则输出 -1 -1

样例

10 13
1
2
3
4
5
6
7
8
9
10
11
12
13
2 2
3 3
4 2
4 4
5 5
6 6
7 7
8 8
9 3
9 9
10 4
10 10
-1 -1