题意
构造一个 (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) 也一定能被表示出。
证明:
所以如果我们构造出 (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)。
然后我们考虑如何推广到矩阵上:观察一下其中一个判定的式子:
发现中间那个东西很难拆,但是我们如果设 (c_{i,j} = a_{i} imes 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)