题目背景
可能以后 zzc就去种田了。
题目描述
田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力去泡妹子,想花最少的体力值去种完这块田地,问最小体力值
输入输出格式
输入格式:
两个正整数x,y,表示田地的长和宽
输出格式:
输出最小体力值
输入输出样例
输入样例#1:
1 10
输出样例#1:
40
输入样例#2:
2 2
输出样例#2:
8
说明
1<=x,y<=10^16
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; long long x,y,sum; int main() { cin>>x>>y; )//确保每一个边都不为零,即为零时说明该田已耕完 { if(x>y) swap(x,y);//这样交换后可确定最大值是哪个 sum+=*x*(y/x);//使用贪心 每次都耕可耕的最大的田地 // 即:每次都耕以最小的边长为边长的正方形 // y/x 为每次可以以这个边长耕作的次数 y%=x; //更完后残余的土地的另一边长 } cout<<sum; ; }