贤鱼的刷题日常 --P1548 [NOIP1997 普及组] 棋盘问题
🏆今日学习目标:🍀学会棋盘问题和题目
@TOC
题目
设有一个 N×M 方格的棋盘(1≤N≤100,1≤M≤100)求出该棋盘中包含有多少个正方形、多少个长方形(不包括正方形)。例如:当 N=2,M=3 时:正方形的个数有 8 个:即边长为 1 的正方形有 6 个;边长为 2 的正方形有 2 个。长方形的个数有 10 个:即 2×1 的长方形有 4 个 1×2 的长方形有 3 个:3×1 的长方形有 2 个:3×2 的长方形有 1 个:如上例:输入:2,3 输出:8,10 输入格式 N,MN,M 输出格式正方形的个数与长方形的个数输入输出样例输入 #1 复制 2 3 输出 #1 复制 8 10
思路
首先解决正方形:边长为 1 nm 边长为 2 (n-1)(m-1)边长为 3 (n-2)(m-2)........所以正方形就出来了,z(储存正方形个数)=nm;n--,m--下面来处理长方形长 1 有 n 个长 2 有 n-1 个
长 n 有 1 个长 m 同上所以长 n 的矩形就为 1+2+3+...n=(n+1)*n/2m 同上所以矩形的个数为 (m+1)m(n+1)*n/2/2 最后减去前面的正方形就出来了
==这个搞不懂没关系,还有方法==数据范围这么小???暴力直接做 i 0 - nj 0 - mk i+1 - nw j+1 - m 这样子当 k-i 等于 w-j 的时候,说明长宽相等(正方形),其余的不就是长方形??i,j 从 0 开始因为这样子就包括了边长为 1 的正方形和长方形
<font color="gree">AC</font>代码
公式法
复制代码
暴力法
复制代码
<font size="5">==🏆结束语==</font> 如果喜欢的话可以订阅一下专栏,持续更新!!
版权声明: 本文为 InfoQ 作者【贤鱼很忙】的原创文章。
原文链接:【http://xie.infoq.cn/article/c48f8f32d1f061e873ca7454b】。未经作者许可,禁止转载。
评论