摆方格

来源:互联网 发布:魔法王座觉醒进阶数据 编辑:程序博客网 时间:2024/04/26 07:23

                                                                                摆方格

                                                                                                 时间限制:1000 ms  |  内存限制:65535 KB
                                                                                                                                    难度:2
描述

  给你一个n*n的方格,每个方格里的数必须连续摆放如  

 

,下图为不连续的,请输出从左上角到右下角的对角线上的最大和   

 

输入
输入包含多组测试数据。
每一行包括一个数据n,表示n*n的方格(保证所有数据在2^64范围内且n>0)
输出
每行输出占一行,输出最大的对角线之和。
样例输入
1
2
3
样例输出
1
6
19
我的代码:
#include <iostream>using namespace std;int main(){long long n,sum,k;while (cin >> n){sum=0;k=n*n;for(long long i=0;i<n-1;++i){sum+=k;k-=2;}sum+=k/2;cout << sum+1 << endl;//k减多了一个2,所以加一}return 0;}

标程:
 #include<stdio.h>int main(){    long long n,m,i,j;    while(~scanf("%lld",&n))    {        long long k=n-1,M=n*n;        printf("%lld\n",k*M-k*(k-1)+n*n/2-n+2);    }    return 0;}        


0 0