[Bnuz OJ]1176 小秋与正方形
传送门
问题描述
某天,acm的小秋拿到了一张很大很大的纸。他现在打算把它撕成正方 形。但是他没有任何工具,没有尺子,所以他尝试一种有趣的方法切分矩形。假设这是一个a*b的矩形(a>b),那么小秋会先把矩形的一个角如图所示 折起,这样右边就会形成一个正方形,然后把正方形切割出来,如果还存在长方形,小秋会继续这样把正方形切出来,现在要求你编写程序,输出小秋这样做最终能 得到多少个正方形。

输入要求
输入数据有多组。
每个测试数据占一行,有两个整数a,b分别代表小秋所拿到的纸的长和宽(1 ≤ b < a ≤ 10^12)
输出要求
输出结果,输出占一行。
测试数据示例
输入
2 110 7
输出
26 今天做了一下学校的新生赛题,觉得还是挺好玩的。有一些几何题确实需要思考优化,暴力就会TLE. 首先,假如b是a的因子,即 a%b ==0,那么,不难想,可以知道当前情况下生成的正方形数 a/b 个. 那么当a%b !=0 时,就是说需要减掉一部分的正方形,然后再判断a%b==0,就可以啦。 上代码
#includelong long slove(long long a,long long b){long long ret = 0;while(a!=b){if(a<b){int t = b;b = a;a = t;}if(a%b==0){return ret+(a/b);}else{ret+=a/b;a=a-(b*(a/b)); }}if(a==b) ret++;return ret; } int main(){long long a,b;while(scanf("%lld %lld",&a,&b)==2){printf("%lld\n",slove(a,b));}return 0; }
转载于:https://www.cnblogs.com/dick159/p/5161077.html
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
