摆方格
时间限制:
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 n;
while(~scanf("%lld",&n))
{
long long m=n*n,sum=0;
for(int i=1;i<n;i++)
{
sum+=m;
m-=2;
}
m/=2;
sum+=m;
printf("%lld\n",sum+1);
}
return 0;
}
代码二:
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int main()
{
long long n;
while(scanf("%lld",&n)!=EOF){
printf("%lld\n",(n-1)*n*n-(n-1)*(n-2)+n*n/2-n+2);
}
return 0;
}