【2015-1】长方形中的正方形(水题)
【摘要】
1.题目
题目描述:给出长方形的长和宽,每次从长方形里撕去最大的正方形,输出最后能得到多少正方形 输入: 3 4 输出: 4
2.思路
水题,不过要注意2点: (1)不断进行while循环,循环终止...
1.题目
题目描述:给出长方形的长和宽,每次从长方形里撕去最大的正方形,输出最后能得到多少正方形
输入:
3 4
输出:
4
2.思路
水题,不过要注意2点:
(1)不断进行while循环,循环终止条件是长和宽相等,注意此时跳出循环后的n还需要加1(因为最后的这个正方形也要加上)。
(2)犯了个极其愚蠢的错误:
对于长和宽在更新的过程开始,需要将大的数字赋值给长(小的数字赋值给宽),从数学上理解:width=min(length,width) length=max(length,width)没错,但是计算机中第一步结束后已经将width
值改变了,所以length值得到错误(按照给的样例3 4会在第一次while循环中得到长和宽都为3,即只遍历了一次循环)。
3.代码1
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main(){
int length,width;
int n=0;//正方形个数
cin>>length>>width;//输入长和宽
while(length!=width){
n++;
if(length < width){
swap(length, width);
}
length=length-width;
}
cout<<n+1;//3+1=4
system("pause");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
4.代码2
带了一点一开始做的注释(没啥用的注释==)
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main(){
int length,width;
int n=0;//正方形个数
cin>>length>>width;//输入长和宽
//while(length!=width && length!=0 && width!=0){//3 4, 3 1,2 1
while(length!=width){
n++; //n=1 2 3
//width=min(length,width); //width=3 1 1
//length=max(length,width); //length=4 3 2
if(length < width){
swap(length, width);
}
length=length-width;
//length=4-3=1,width=3
//length=3-1=2,width=1
//length=2-1=1,width=1
//printf("%d\n",n);
}
cout<<n+1;//3+1=4
system("pause");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/113852329
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)