牛客周赛 Round 3
D 游游的矩阵权值
题目描述
游游定义一个矩阵权值为:每一对相邻元素之和的总和。
例如,对于矩阵:
1 2
3 4
它的权值是(1+2)+(1+3)+(2+4)+(3+4)=3+4+6+7=20。
游游希望你构造一个\(n*n\)的矩阵,矩阵中的元素为1到\(n^2\)且每个数恰好出现一次。她希望最终矩阵的权值尽可能大。你能帮帮她吗?由于矩阵可能过大,你不需要输出最终的矩阵,只需要输出这个最大权值即可。答案对\(10^9+7\)取模。
输入描述
一个正整数\(n\)。
\(2\leq n \leq 10^9\)
输出描述
矩阵的最大权值,对\(10^9+7\)取模。
解题思路
显然只要越大的数字放在矩阵的越里面总和就会越大,因此只需要计算一下所有的数字出现的位置就行。
四个角落的数只会加2次,边上的数都会加3次,里面的数都是4次,因此把最大的(n−2)×(n−2)个数字放中间,次大的放边上,1-4这四个数字放角上,用等差数列求和容斥一下即可。
代码实现
n=int(input())
print((2*n**4-6*n**2+14*n-16)%int(1e9+7))

浙公网安备 33010602011771号