单点时限: 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;
}