数方格
2026-07-14 11:33:09
发布于:吉林
8阅读
0回复
0点赞
核心公式原理
设正方形边长为 s:
在高度 n 方向,能放下的行数:n-s+1
在宽度 m 方向,能放下的列数:m-s+1
边长为 s 的正方形总数量:(n-s+1)*(m-s+1)
我们枚举所有可能边长s = 1, 2, 3, ……, min(n, m),累加每种边长的正方形总数。
代码如下:
#include<iostream>
using namespace std;
int n, m, k;
int main(){
cin >> n >> m;
k = min(n, m);
long long ans = 0;
for(int s = 1;s <= k;s++){
int a = n - s + 1;
int b = m - s + 1;
long long mul = a * b;
ans = ans + mul;
}
cout << ans;
return 0;
}
这里空空如也






有帮助,赞一个