CF1560C Infinity Table

题目描述

Polycarp 发现了一张拥有无限多行和列的表格。行号从上到下依次为 $1$ 开始编号,列号从左到右依次为 $1$ 开始编号。 最初,这张表格是空的,Polycarp 想要填充它。他按照如下方式依次将整数 $1$ 开始填入表格。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1560C/fbe22cdb57a9c1d91e54741c4b3ed27f17ef455a.png) 上图展示了数字 $1$ 到 $10$ 的填充方式,箭头表示填充的顺序。首先,Polycarp 在表格的左上角(第一行第一列)填入数字 $1$。然后,他按照如下算法依次填入从 $2$ 开始的所有正整数。 首先,Polycarp 选择第一行中最左侧尚未填充的单元格并填入数字。接着,只要刚刚填充的单元格的左侧邻格已经被填充,他就向下移动并填充下一个单元格。如此向下,直到当前填充的单元格左侧有一个未填充的邻格为止(如上图中的竖直箭头所示)。 之后,他从右向左依次填充单元格,直到到达第一列为止(如上图中的水平箭头所示)。然后,Polycarp 再次选择第一行中最左侧尚未填充的单元格,继续上述过程。 Polycarp 的朋友有一个喜欢的数字 $k$。他想知道数字 $k$ 会被填入哪一个单元格。请你帮他找出该单元格的行号和列号,即该数字所在的行和列的编号。

输入格式

第一行包含一个整数 $t$($1 \le t \le 100$),表示测试用例的数量。接下来有 $t$ 行,每行一个整数 $k$($1 \le k \le 10^9$),表示需要查询的位置。

输出格式

对于每个测试用例,输出一行两个整数 $r$ 和 $c$($r, c \ge 1$),表示数字 $k$ 所在单元格的行号和列号。两个整数之间用空格隔开。

说明/提示

由 ChatGPT 4.1 翻译