185. 种田

单点时限: 2.0 sec

内存限制: 256 MB

有一块矩形田地,长宽分别为x, y,但是Robin每次只能种一个正方形,每种一块正方形田(种过的田不可以再种),Robin消耗的体力值是正方形的周长,为了节省体力去码代码,请你设计一个程序帮Robin花最少的体力值种完这块地,并输出最小需要耗费的体力值。

输入格式
输入为两个整数x, y(1⩽y⩽x⩽1016),分别表示矩形的长和宽。

输出格式
输出一个整数v, 表示最小需要耗费的体力值。

样例
input
2 2
output
8
input
10 1
output
40

/*
思路:尽可能不重复边,即尽最大边划分最大正方形。
*/
#include<iostream>
using namespace std;
int main() {
	long long x,y;
	cin>>x>>y;
	if(x>y)
		swap(x,y);
	long long ans=0;
	while(x) {//每次均以为最短边
		long long a=y/x;
		ans+=4*x*a;
		y%=x;
		swap(x,y);
	}
	cout<<ans;
	return 0;
}
发布了45 篇原创文章 · 获赞 21 · 访问量 480

猜你喜欢

转载自blog.csdn.net/qq_40394960/article/details/105123851