LQ0094 矩形切割迭代
Posted 海岛Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0094 矩形切割迭代相关的知识,希望对你有一定的参考价值。
题目来源:蓝桥杯2019初赛 C++ C组F题
问题描述
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。 例如,对于一块两边分别为 5 和 3 的材料(记为 5×3),小明会依次切出 3×3、2×2、1×1、1×1 共 4 个正方形。 现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会 切出多少个正方形?
问题分析
迭代计算即可。
解决方法有减法和除法两种,后者要快一些。这有点像“欧几里得算法”和“更相减损法”的差异。
AC的C语言程序(除法)如下:
/* LQ0094 矩形切割 */
#include <stdio.h>
int main()
int n = 2019, m = 324, cnt = 0, num, t;
while (m)
cnt += num = n / m;
t = n - m * num, n = m, m = t;
printf("%d\\n", cnt);
return 0;
AC的C语言程序(减法)如下:
/* LQ0094 矩形切割 */
#include <stdio.h>
int main()
int n = 2019, m = 324, cnt = 0, t;
while (n != m)
if (n < m)
t = m, m = n, n = t;
n -= m, cnt++;
printf("%d\\n", cnt + 1);
return 0;
以上是关于LQ0094 矩形切割迭代的主要内容,如果未能解决你的问题,请参考以下文章