#P13809. [CERC 2022] Denormalization

[CERC 2022] Denormalization

Description

Brodnik 博士准备了一个包含 NN 个整数的列表 A=[a1,a2,,aN]A = [a_1, a_2, \ldots, a_N]。没有人确切知道这些数字代表什么,但众所周知:

  • 对于所有 1iN1 \leq i \leq N,都有 1ai100001 \leq a_i \leq 10\,000
  • 这些数的最大公约数为 11

Hočevar 博士决定帮同事一个忙,将该列表归一化,因为他认为这代表 nn 维实向量空间中的一个向量。具体来说,他计算了

$$d = \sqrt{\sum_{i=1}^{N} a_i^2} = \sqrt{a_1^2 + a_2^2 + \cdots + a_N^2}$$

并将 Brodnik 博士的列表替换为 [a1/d,a2/d,,aN/d][a_1/d, a_2/d, \ldots, a_N/d]。归一化后的每个数都被保留到小数点后 12 位用于存储。我们将存储的归一化列表记为 X=[x1,x2,,xN]X = [x_1, x_2, \ldots, x_N]。过了一段时间后,他意识到这是个错误,现在希望恢复原始列表 AA。当然,原始数据没有备份。由于 Hočevar 博士现在正忙于更重要的任务,非常希望你能帮忙。

由于四舍五入导致部分数据丢失,他只需要你构造出任意一个列表 R=[r1,r2,,rN]R = [r_1, r_2, \ldots, r_N],使得归一化后与 XX 中对应元素的差值不超过 10610^{-6} 即可。

Input Format

输入的第一行包含一个整数 NN,即列表 XX 的长度。接下来的 NN 行中,第 ii 行包含一个浮点数 xix_i,精确到小数点后 12 位。保证输入是有效的,即确实是按照题目描述的方法由满足条件的整数列表得到的。

Output Format

输出应包含 NN 行,依次输出重构得到的整数 r1,r2,,rNr_1, r_2, \ldots, r_N。你可以输出任意一个满足要求的解。

6
0.137516331034
0.165019597241
0.275032662068
0.412548993102
0.825097986204
0.165019597241
5
6
10
15
30
6

Hint

输入范围

  • 2N100002 \leq N \leq 10\,000
  • 对于所有 1iN1 \leq i \leq N,都有 0<xi<10 < x_i < 1

输出范围

  • 对于所有 1iN1 \leq i \leq N,都有 1ri100001 \leq r_i \leq 10\,000
  • gcd(r1,,rN)=1\gcd(r_1, \ldots, r_N) = 1

由 ChatGPT 4.1 翻译