CF 417 D 题解

题意

构造一个 (n imes m) 的正整数组成的矩形 (A_{i,j}),设 (row_i = sum_{j=1}^m a_{i,j},col_j = sum_{i=1}^n a_{i,j}),要求满足 (sum_{i=1}^n row_i^2,sum_{i=1}^m col_i^2) 都是平方数。

题解

一步都想不到我自闭了。

一个想法是先考虑一行的情况再看看能否能推广:

现在我们的问题是构造一个序列 (a_i),满足 (sum_{i=1}^n a_i^2) 是平方数。注意到 ((n-2)^2 = n^2-4n+4 = n^2-4(n-1) = n^2-sum_{j=2}^n 2^2),但是构造的矩阵不能有负数,移项可以发现有 (n^2 = (n-2)^2+sum_{j=2}^n 2^2),所以可以构造序列 (a_1 = n-2,a_2 = a_3 = ldots = a_n = 2)

一种更好的推法是考虑一个定理:如果一个正整数 (x) 能被若干个数的平方和表示出,那么 (x^2) 也一定能被表示出。

证明:

[egin{aligned} x&=sum_{i=1}^n a_i^2\ x^2&=(sum_{i=1}^n a_i^2)^2\ &= (sum_{i=1}^{n-1}a_i^2 - a_n^2 + 2a_n^2)^2\ &= (sum_{i=1}^{n-1}a_i^2-a_n^2)^2 +4(sum_{i=1}^{n-1} a_i^2-a_n^2)a_n^2 + 4a_n^4\ &= (sum_{i=1}^{n-1}a_i^2-a_n^2)^2 +4a_n^2sum_{i=1}^{n-1} a_i^2\ &= (sum_{i=1}^{n-1}a_i^2-a_n^2)^2 +sum_{i=1}^{n-1} (2a_ia_n)^2\ end{aligned} ]

所以如果我们构造出 (b_i) 满足 (x=sum_{i=1}^n b_i^2),那么我们就可以令 (a_1 = sum_{i=1}^{n-1}b_i^2-b_n^2,a_i = 2b_ib_n) ,就可以得到 (x^2 = (sum_{i=1}^n a_i^2)^2)

所以说我们取任意 (b_1 = b_2 = ldots = b_n = 1),就可以得到 (a_1 = n-2,a_2 = a_3 = ldots = a_n = 2)

但是注意 (n leq 2) 的时候要特判一下因为不能有 (leq 0)

然后我们考虑如何推广到矩阵上:观察一下其中一个判定的式子:

[sum_{i=1}^n (sum_{j=1}^m c_{i,j})^2 ]

发现中间那个东西很难拆,但是我们如果设 (c_{i,j} = a_{i} imes b_j),可以得到:

[egin{aligned} sum_{i=1}^n (sum_{j=1}^m c_{i,j})^2 &= sum_{i=1}^n (sum_{j=1}^m a_ib_j)^2\ &= sum_{i=1}^n a_i^2 (sum_{j=1}^m b_j)^2\ &= x_1^2sum_{i=1}^n a_i^2\ &= (x_1x_2)^2 end{aligned} ]

显然满足条件,于是就做完了。

最后一步这样构造的原因可能是:首先整体乘一个数不会影响答案,现在的主要矛盾是和不相等,也就是

[sum_{i=1}^n a_i eq sum_{j=1}^m b_j ]

我们可以通过乘上某些数来解决这个问题,其实就是给你两个数 (a,b) 让你随便找一个 (c,d) 满足 (ac = bd)。这里是令 (c=b,d=a),所以和就是 (sum_{i=1}^n sum_{j=1}^m a_ib_j) 观察可得 (c_{i,j} = a_i b_j)

原文地址:https://www.cnblogs.com/rainair/p/14305859.html