SRM146 DIV1 300
数学题,分析如下:
宽度w、高度h的矩形(包括正方形)在宽度width、高度height的矩形中所含个数是:(width−w+1)(height−h+1)
因此所求不等边矩形个数:
sum=width∑w=1height∑h=1(width−w+1)(height−h+1)−min(width,height)∑w=1(width−w+1)(height−w+1)=width∑w=1height∑h=1width∗height−min(width,height)∑w=1(width−w+1)(height−w+1)=(1+width)width/2∗(1+height)height/2−min(width,height)∑w=1(width−w+1)(height−w+1))_
注意下划线所指式子要用程序循环累加来计算

1 class RectangularGrid: 2 def countRectangles(self, width, height): 3 mn = min(width, height) 4 return int((1+width)*width/2) * int((1+height)*height/2) - countSquares(width,height) 5 6 7 def countSquares(width, height): 8 sum = 0 9 k = min(width, height) 10 for x in range(1, k+1): 11 sum += (width-x+1) * (height-x+1) 12 return sum 13 14 15 # test 16 o = RectangularGrid() 17 18 # test case 19 assert(o.countRectangles(3,3) == 22) 20 assert(o.countRectangles(5,2) == 31) 21 assert(o.countRectangles(10,10) == 2640) 22 assert(o.countRectangles(1,1) == 0) 23 assert(o.countRectangles(592,964) == 81508708664)
PS:好多人直接用O(width*height)的算法累加来计算的,比赛中为了编码速度,应该是可以接受的吧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端