核心性质:对于正整数 x,定义其“平方因子核” k(x) 为 x 的质因数分解中次数为奇数的所有质因子的乘积(可通过不断除去平方因子得到)。可以证明,两个正整数 a 和 b 的乘积是完全平方数,当且仅当 k(a)=k(b)。
问题转化:在序列 a1,a2,…,an 中,一对相邻元素 (ai,ai+1) 能贡献得分(乘积为完全平方数)等价于它们的平方因子核相同。不同核的元素相邻不可能得分。
上界分析:将 1 到 n 的所有整数按照 k(x) 的值划分为若干组。若构造序列时将同一组的元素连续排列,则每组内部会产生 (∣G∣−1) 个得分位置;不同组的邻接处不会得分。因此总得分最大可能值(上界)为
G∑(∣G∣−1)=n−(不同 k(x) 的个数)这个上界是可以达到的。
在一个名为“平方积”的数字挑战中,你会得到一个正整数 n。你需要将 1 到 n 这 n 个整数排列成一个序列 a1,a2,…,an,每个数字恰好出现一次。序列的得分定义为满足 ai×ai+1 是一个完全平方数的位置 i 的个数(1≤i<n)。请你构造一个序列,使得得分尽可能大。
本题包含多组测试数据。数据组数不超过 104,每组数据中的 n 满足 2≤n≤2×105,且所有测试数据的 n 之和不超过 2×105。
第一行包含一个整数 T,表示测试数据的组数。接下来 T 行,每行包含一个整数 n,表示本组数据中序列的长度。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册