世纪难题(c++)

题目描述

小Z在“定向越野”的比赛中,过关斩将,克服重重难关,快速且高效地完成了各个关卡裁判安排的任务,转眼间,小Z来到了最后一关。说来最后一关也真是有趣,把奖品锁在了一个带有电子屏幕的宝盒中,只要破解密码打开宝盒,即可获得最终的大奖,由于宝盒只有一个,所以很考验小Z的破解的速度。破解题目规则如下:将一个给定的n×m矩形划分为一个个正方形,其规则是先尽可能多地从矩形中划分一块正方形,接下来,在剩下的矩形中尽可能多的划分一块正方形……,例如,图中所示是一个3×4的矩阵,可最少划分为4个正方形。 

也就是说,取走一个3×3的正方形后,将问题规模变成3×1,然后变成2×1,最后变成1×1。规模每缩小一次,正方形的个数加1。能划分的正方形的个数即为宝盒的密码,这道“世纪难题”让小Z花费了大量时间,但由于前面花费时间很少,最终还是成功打开宝箱,获得了最终的大奖。

输入格式

共1行,两个正整数n,m,用空格隔开

输出格式

共1行,为宝箱的密码即可划分的正方形数正方形数

样例

输入样例1
3 4

输出样例1
4

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b,x=0;
    cin>>a>>b;
    while(a!=b){
        if(a>b){a=a-b;x++;}
        if(b>a){b=b-a;x++;}
    }
    x++;
    cout<<x<<endl;
}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值