您的位置:首页 > 其它

nyoj1087摆方格(数学规律题)

2014-10-09 10:45 344 查看

摆方格

时间限制: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: