nyoj1087摆方格(数学规律题)

来源:互联网 发布:星霜篇 知乎 编辑:程序博客网 时间:2024/04/27 21:08

摆方格

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

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

 

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

 

输入
输入包含多组测试数据。
每一行包括一个数据n,表示n*n的方格(保证所有数据在2^64范围内且n>0)
输出
每行输出占一行,输出最大的对角线之和。
样例输入
123
样例输出
1619
上传者
ACM_刘炀
分析:n=1 1
n=2  1 2 斜对角线=2+4=6
4 3
n=3
18 9
27 6
3 4 5斜对角线=9 + 7+3
n=4 
9 10 15 16 斜对角线=16 + 14 +12+6 =48 规律 n*n+n*n-2+n*n-4+(n*n-4)/2;
8 11 14 1
7 12 13 2
6 5    4 3
公式法:
 #include<iostream>using namespace std;int main(){    long long n,m;    while(cin>>n)    {        long long k=n-1,M=n*n;        cout<<k*M-k*(k-1)+n*n/2-n+2<<endl;    }}        

模拟过程法:

 #include<iostream>#include<string.h>#include<algorithm>#include<cstdio>using namespace std;int main(){    long long n;    while(cin>>n)    {        long long k=n*n;        long long sum=0;        for(int i=0; i<n-1; i++)        {                sum+=k;                k-=2;        }        k/=2;        sum+=k;        cout<<sum+1<<endl;    }    return 0;}        


0 0
原创粉丝点击