CF711B Chris and Magic Square
题目描述
ZS the Coder 和 Chris the Baboon 到达了 Udayland 的入口处。入口处有一个 $n \times n$ 的魔方格,每个格子中都填有整数。Chris 注意到,恰好有一个格子是空的,如果要进入 Udayland,就需要在这个空格里填写一个正整数。
Chris 尝试了随便填写一些数,但并没有成功。ZS the Coder 发现,必须填写一个正整数,使得整个方格成为一个“魔方阵”。也就是说,你需要填写一个正整数,使得方格中每一行的数字之和、每一列的数字之和,以及两条对角线(主对角线、副对角线)的数字之和都相等。
Chris 不知道该填什么数。你能帮 Chris 找出应该填写的正整数,或者判断不可能吗?
输入格式
第一行包含一个整数 $n$($1 \leq n \leq 500$),表示魔方格的行数和列数。
接下来的 $n$ 行,每行包含 $n$ 个整数。第 $i$ 行第 $j$ 个数 $a_{i,j}$($1 \leq a_{i,j} \leq 10^{9}$ 或 $a_{i,j} = 0$),表示方格第 $i$ 行第 $j$ 列的数值。如果对应格子为空,则 $a_{i,j} = 0$,否则为正整数。
保证恰好有且只有一对 $i,j$ 满足 $1 \leq i, j \leq n$ 且 $a_{i,j} = 0$。
输出格式
输出一个正整数 $x$($1 \leq x \leq 10^{18}$),表示应填入空格的数,使得整个方格成为魔方阵。如果不存在这样的正整数 $x$,则输出 $-1$。
如果存在多个解,你可以输出任意一个。
说明/提示
在第一个样例中,可以将 $9$ 填入空的位置,使得到的方格成为一个魔方阵。确实:
每一行的数字之和为:
$4+9+2 = 3+5+7 = 8+1+6 = 15$。
每一列的数字之和为:
$4+3+8 = 9+5+1 = 2+7+6 = 15$。
两条对角线的数字之和也为:
$4+5+6 = 2+5+8 = 15$。
在第三个样例中,无论填入哪个数,都无法使该方格成为魔方阵。
由 ChatGPT 5 翻译