题解
这道题放在了暴力枚举里面,说个实话为什么感觉就是数学问题呢?如果这道题要会做的话必须知道两个结论:
1. 对于一个长为n宽为m的格子来说,格子的矩形数为(长+1)*长/2)*((宽+1)*宽/2)
。
2. 对于不同边长来说正方形的个数为(n-i)*(m-i)
。
主要思路就是先求出矩形数,再求出正方形数,那么矩形数-正方形数=长方形数即可
n, m = map(int, input().split())
z = 0
# ((长+1)*长/2)*((宽+1)*宽/2) 就是求长*宽个格子里面多少矩形数 这个是数学公式
al = int(((n + 1) * n / 2) * ((m + 1) * m / 2)) # 这个地方不懂可以记住 所有的矩形数(长方形+正方形)
for i in range(0, min(n, m)): # 找最小的边 这个地方的0其实就是边长为1的正方形 不就n*m吗 边长为2(假如n为2m为3)自己画一画 就是2个 就是(n - 1) * (m - 1)
z += (n - i) * (m - i) # 求正方形 也可以当成一个公式
print(z, al - z)