牛客周赛 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))
posted @ 2024-06-02 23:57  udiandianis  阅读(31)  评论(0)    收藏  举报