摆方格

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

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

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

 
输入
输入包含多组测试数据。
每一行包括一个数据n,表示n*n的方格(保证所有数据在2^64范围内且n>0)
输出
每行输出占一行,输出最大的对角线之和。
样例输入
1
2
3
样例输出
1
6
19 解题思路:n的平方那个数字不在顶角位置。对角线上n-1个数字与n的平方成等差数列,顶角最小的那个值由对角线一侧的空格数来推算,也是根据空格构成等差数列来求,当然要去掉那些穿插的较大的数的个数(n-1)/2。
#include<stdio.h>
#define LL long long
int main(){ LL n,a,b,ans;
while(scanf("%lld",&n)!=EOF){ a=n*(n-1)/2-(n-1)/2+1; //求顶角不构成等差数列那个数
b=(n*n-(n-2))*(n-1); //对角线构成等差数列的和
ans=a+b;
printf("%lld\n",ans);
}
return 0;
}

  

以n=4为例。对角线上,16的位置不是在右上角,而是留了一个顶角位置,12、14、16构成了等差数列。6可以由对角线左侧的空格个数来求得,即n*(n-1)/2为对角线左侧的空格个数,而由于会有13等较大的数的穿插,所以(n-1)/2即为所穿插的较大数的个数(可以写几组找下规律)。

最新文章

  1. JDBC增删改查简单测试
  2. Java自己实现双向链表LinkList
  3. iOS static
  4. psql-06表:约束
  5. ThinkPHP 分页类的使用及退出功能的实现
  6. SQL Server 2008|2012 阻止保存要求重新创建表的更改
  7. String对象的方法
  8. Oracle中用一个表的数据更新另一个表的数据
  9. Windows 下命令行修改文件夹的控制权限 Cacls
  10. 用Eclipse编写运行Java程序
  11. devexpress中gridcontrol 一些样式改变
  12. JavaScript核心
  13. (二)backbone - DEMO - user list
  14. C++、GDAL创建shapefile,并向矢量文件中添加网格
  15. 【java设计模式】之 工厂(Factory)模式
  16. tmux鼠标配置出现错误unknown option: mode-mouse
  17. 【HotSpot】jps命令行详解
  18. 推荐前端开发手机调试打印神器console.log()
  19. js 原生_拖动页面元素,松开释放
  20. 最长上升子序列(dp)

热门文章

  1. vs2015+opencv3.3.1 +Eigen 3.3.4 c++实现 薄膜插值 泊松图像编辑(v=0||Δf=0)
  2. ubuntu14.04,安装Git(源代码管理工具)
  3. 洛谷P2770 航空路线问题(费用流)
  4. Java FileInputStream与FileReader的区别
  5. 老男孩Day13作业:ORM学员管理系统
  6. mysql自动备份并上传至git仓库
  7. cnd 计费流量查询服务模块设计与实现
  8. Query on a tree II 倍增LCA
  9. SLAM技术在国内的发展现状
  10. win7/win8/win10 系统