题目:
试题 B: 矩形切割
本题总分:5 分
【问题描述】
小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方
形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
例如,对于一块两边分别为 5 和 3 的材料(记为 5 × 3),小明会依次切出
3 × 3、2 × 2、1 × 1、1 × 1 共 4 个正方形。
现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会
切出多少个正方形?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
分析:
切出最大数量的正方形,先确认结束条件,切到最后肯定是某一条变等于0了。那么while结束条件就是任意一条边等于0,哪个边大我们就用这个边减去另一个边,一直剪到结束为止。
步骤:
package 第十届省赛;
public class 矩阵切割 {
public static void main(String[] args) {
// 小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形。
// 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方
// 形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。
// 例如,对于一块两边分别为 5 和 3 的材料(记为 5 × 3),小明会依次切出
// 3 × 3、2 × 2、1 × 1、1 × 1 共 4 个正方形。
// 现在小明有一块矩形的材料,两边长分别是 2019 和 324。请问小明最终会
// 切出多少个正方形?
int result=0;
int chang=2019;
int kuan=324;
while (chang!=0&&kuan!=0) {
if (chang>kuan) {
chang-=kuan;
result++;
}else {
kuan-=chang;
result++;
}
}
System.out.println(result);
}
}