时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
给你一个n*n的方格,每个方格里的数必须连续摆放如
1
2
4
3
,下图为不连续的,请输出从左上角到右下角的对角线上的最大和
1
3
4
2
输入
输入包含多组测试数据。 每一行包括一个数据n,表示n*n的方格(保证所有数据在2^64范围内且n>0)
输出
每行输出占一行,输出最大的对角线之和。
样例输入
1
2
3
样例输出
1
6
19
多画几组,找规律!
n=1
1
n=2
2 1
3 4 //4 2
n=3
3 2 1
4 7 8
5 6 9 //9 7 3(7/2)
n=4
9 10 15 16
8 11 14 1
7 12 13 2
6 5 4 3 // 16 14 12 6(12/2)
5
15 16 17 18 19
14 13 22 21 20
11 12 23 2 1
10 25 24 3 4
9 8
等差数列第n项 an=a1+n*d
等差数列前n项和 sn=n*a1+n*(n-1)*d/2
#include<cstdio> #include<iostream> #include<string.h> #include<algorithm> #include<stdlib.h> using namespace std; int main() { long long n,ans; while(cin >> n) { ans=(n-1)*n*n-(n-1)*(n-2)+n*n/2+2-n; cout << ans << endl; } return 0; }