摆方格
时间限制: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;
}