给一个长方形的纸片,从中剪出正方形,再从剩余的纸片中循环剪正方形,问当剪完之后一共可以剪出多少正方形。
分析:
可以用一个递归函数解决,函数内部先判断两边大小,按大小定出长和宽,在判断是否相等,若想等返回1,如果宽等于0,返回0,若以上均不满足,则递归执行该函数,注意最后一个返回值要加入本次递归的正方形数目。
代码如下:
<span style="background-color: rgb(204, 204, 204);">#include<iostream>
using namespace std;
typedef long long ll;
ll deal(ll a,ll b)
{
if(a<b)
swap(a,b);
if(b==0)
return 0;
if(a==b)
return 1;
return a/b+deal(b,a%b);
}
int main() {
ll a,b;
while(cin>>a>>b)
{
cout<<deal(a,b)<<endl;
}
return 0;
}</span>
<span style="background-color: rgb(204, 204, 204);"> #include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
__int64 a,b;
__int64 num;
int main()
{
while(scanf("%I64d %I64d",&a,&b)!=EOF)
{
num = 0;
if(a<b)
swap(a,b);
while(b)
{
num += a/b;
a%=b;
if(a<b)
swap(a,b);
}
printf("%I64d\n",num);
}
return 0;
} </span>