摆方格
时间限制:
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
-
输入包含多组测试数据。
-
#include<stdio.h> int main() { long long int n; while(scanf("%lld",&n)!=-1) { long long int p; p=n*n; long long int sum=0; for(long long int i=0;i<n-1;i++) { sum+=p; p=p-2; } p=p/2; sum+=p; printf("%lld\n",sum+1); } }
-
-
-
先把n^2这个数放在第二行第二列,然后以长度为2的锯齿形一直放到最右下角,让对角线的数字都比上一个小2,剩下的就好办了。比如对n=6 36 35 34 33 32 31 30 29 28