摆方格

来源:互联网 发布:115个java面试题和答案 编辑:程序博客网 时间:2024/03/29 16:02

摆方格

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

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

 

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

 

输入
输入包含多组测试数据。
每一行包括一个数据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

0 0
原创粉丝点击