#P14039. [PAIO 2025] Cake
[PAIO 2025] Cake
Description
Bartosz 在庆祝他的生日时收到了一个尺寸为 的矩形蛋糕。由于他只喜欢方形的蛋糕块,他决定按照一种特殊的方法把整个蛋糕切成正方形。
每次切蛋糕时,Bartosz 都会将当前蛋糕中能切出的最大正方形切下来,并且这个正方形必须至少有三条边贴着当前剩余矩形的边。这个过程不断重复,直到蛋糕被完全切成若干个正方形。
例如,假设矩形的尺寸为 ,如下图所示:
::::align{center}
::::
在这个例子中,他会先切下一个 的正方形。剩下的蛋糕为 的矩形。然后,他会切出 的正方形共四次。
给定初始蛋糕的尺寸 ,请你计算使用这种切法总共可以得到多少个正方形。
实现细节
你需要实现如下函数:
int32 count_square_cakes(int32 N, int32 M)
- :蛋糕的宽度
- :蛋糕的高度
- 该函数需要返回需要切出的正方形个数
- 注意,这个函数每次运行会被调用 次
Input Format
输入格式如下:
第一行:一个整数 ,表示测试用例数量。
接下来 行:每行含两个整数 ,表示蛋糕的宽度和高度。
评测器会对每组数据调用一次 count_square_cakes(N, M) 并输出结果。
Output Format
对每组数据输出一行,表示将蛋糕全部切成正方形所需的总块数。
Hint
样例说明
对于调用 count_square_cakes(5, 4),上述已经解释,答案为 。
对于调用 count_square_cakes(6, 6),原矩形已经是正方形,答案为 。
对于调用 count_square_cakes(11, 2),矩形变化为:,,,,,,。因此将得到五个 正方形和两个 正方形,共 块。
对于调用 count_square_cakes(12, 6),矩形会被切成两个 的正方形。
对于调用 count_square_cakes(18, 5),过程为:,,,,,,。所以得到三个 正方形,两个 正方形,两个 正方形,总共 块。
数据范围与约定
提示
- 子任务1(6分):
- 子任务2(11分):
- 子任务3(21分):,
- 子任务4(17分):
- 子任务5(27分):,
- 子任务6(18分):无额外限制
由 ChatGPT 5 翻译
京公网安备 11011102002149号