AlgoMooc
← 返回题库

K0096. 魔纹石阵的双序重排

简单通过率 52% · 提交 23 · 通过 12
模拟排序数学

在“数字阵列”中摆放着一列能量晶石,共有 `n` 块,第 `i` 块晶石上刻着一个正整数能量值 `a[i]`。小慕要对这列晶石进行一次“”,规则如下: - 若某块晶石的能量值是完全平方数,则称其为“辉晶石”。完全平方数满足:存在整数 `k` 使得 `x = k*k`。 - 所有辉晶石所在的位置集合保持不变,只在这些位置上把对应的数按 升序 重新填回。 - 其余晶石称为“暗晶石”(非完全平方数)。 - 所有暗晶石所在的位置集合保持不变,只在这些位置上把对应的数按 降序 重新填回。 你需要输出重排完成后的整列能量晶石数值。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行输入一个整数 `n`,表示魔纹石数量。 第二行输入 `n` 个整数 `a[0], a[1], ..., a[n-1]`,表示从左到右的能量值。 - `1 <= n <= 100` - `1 <= a[i] <= 1000`

输出描述

输出一行 `n` 个整数,表示按规则重排后的数组。

示例

示例 1

输入

8
36 11 4 18 49 7 10 9

输出

4 18 9 11 36 10 7 49

说明:位置 `0,2,4,7` 上的数为完全平方数:`36 (=6*6)`, `4 (=2*2)`, `49 (=7*7)`, `9 (=3*3)`。 只在这些位置上按升序回填后变为:`4, 9, 36, 49`,对应放回位置 `0,2,4,7`。 其余位置 `1,3,5,6` 上的数为非完全平方数:`11,18,7,10`。 只在这些位置上按降序回填后变为:`18, 11, 10, 7`,对应放回位置 `1,3,5,6`。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。