您的位置:首页 > 其它

nyoj 1087 摆方格

2015-09-23 14:19 183 查看

摆方格

时间限制:1000 ms | 内存限制:65535 KB难度:2描述 给你一个n*n的方格,每个方格里的数必须连续摆放如
,下图为不连续的,请输出从左上角到右下角的对角线上的最大和
输入输入包含多组测试数据。每一行包括一个数据n,表示n*n的方格(保证所有数据在2^64范围内且n>0)输出每行输出占一行,输出最大的对角线之和。样例输入
1
2
3
样例输出
1
6
19
多画几组,找规律!
n=1
1
n=2
  21
3 4  //4  2
n=3
   3 21
4 7 8
5 6 9 //9  7  3(7/2)
   n=4   9101516   811141  71213 2  65   4 3  //16 14 12  6(12/2)
5
  1516171819  1413 22 21 20  1112 23  2  1  10 25 24  3   4   9   8   7  6  5  // 25 23  21 19 9(19/2)
规律:等差k-1项+最后一项/2
代码:
    [code] #include<stdio.h>#include<string.h>#define N1100//int a;int main(){	long long  n;	while(scanf("%lld",&n)!=EOF)	{		long long  i,j,k;	     k=n*n;		long long sum=0;		for(i=0;i<n-1;i++)		{			sum+=k;			k-=2;		}		k/=2;		sum+=k;		printf("%lld\n",sum+1);	}	return 0;}        
下面是个等差公式推出来的:[/code]
      [code] #include<stdio.h>int main(){	long long  n;	while(scanf("%lld",&n)!=EOF)	{		if(n&1)		printf("%lld\n",n*n*n-3*n*n/2+2*n-1);		else		printf("%lld\n",n*n*n-3*n*n/2+2*n);	}	return 0;}        
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: