0085 长方形计数
* * * *
拉格朗日计划
* * * *
长方形计数

2×3的长方形网格中共有18个不同大小的长方形,如下图所示:



不存在恰好包含两百万个长方形的网格,求包含长方形的数目最接近两百万的长方形网格的面积。

本题难度:



解答

显然m×n的网格中共有(ma+1)×(nb+1)a×b的长方形,因而长方形的总数是 R(m,n)=amb=1n(ma+1)×(nb+1)=a=1n(ma+1)b=1n(nb+1)=(m2+mm(m+1)2)(n2+nn(n+1)2)=14mn(m+1)(n+1) 双循环搜索2000以内的m,n即得结果2772。此时m、n分别是36和77,长方形总数是1999998,只比两百万少2。

s=target=8000000
a=b=0
for m in range(1,2000):
    for n in range(m,2000):
        t=target-m*n*(m+1)*(n+1)
        if abs(t) < s:
            a,b,s=m,n,abs(t)

print a*b,a,b,s