洛谷P14039题解

分析

题意

我们需要将一个 N×MN \times M 的矩形蛋糕切割成若干正方形,每次都切出当前能得到的最大正方形(该正方形至少有三条边贴着剩余矩形的边),直到蛋糕完全被切割。要求计算最终得到的正方形总数。

思路

NMN \geq M,可切割出 NM\left\lfloor \frac{N}{M} \right\rfloorM×MM \times M 的正方形,剩余矩形为 (NmodM)×M(N \bmod M) \times M

N<MN < M,可切割出 MN\left\lfloor \frac{M}{N} \right\rfloorN×NN \times N 的正方形,剩余矩形为 N×(MmodN)N \times (M \bmod N)

重复上述过程,累计正方形总数,直至某边长度为 00

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;
int32_t count_square_cakes(int32_t N, int32_t M) {
int32_t r = 0;
while (N > 0 && M > 0) {
if (N >= M) {
r += N / M;
N %= M;
} else {
r += M / N;
M %= N;
}
}
return r;
}

洛谷P14039题解
https://lijingshu2014.github.io/2025/10/03/洛谷P14039题解/
作者
lijingshu
发布于
2025年10月3日
许可协议