牛客周賽 Round 3

udiandianis發表於2024-06-02

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))

相關文章