题目描述
田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力去泡妹子,想花最少的体力值去种完这块田地,问最小体力值
输入输出格式
输入格式:
两个正整数x,y,表示田地的长和宽
输出格式:
输出最小体力值
输入输出样例
输入样例#1
1 10
输出样例#1
40
输入样例#2
2 2
输出样例#2
8
说明
1<=x,y<=10^16
思路
#include<stdio.h>
#include<iostream>
using namespace std;
long long int x,y,s=0;//x长,y宽
int main()
{
ios::sync_with_stdio(false);
cin>>x>>y;
while(x!=0&&y!=0)//就是一个数学迭代,像gcd的辗转相除法
{//如果为0就结束了
swap(x,y);//交换x,y
s=s+4*y*(x/y);//长方形剩下的所有最大正方形
x=x%y;
}//每次删除最大的正方形(即长度为x的正方形),直到y比x,也就是不能再删除一个长度为x的正方形了
cout<<s<<endl;
return 0;
}