P2660 zzc 种田
题目背景
可能以后 zzc就去种田了。
题目描述
田地是一个巨大的矩形,然而zzc 每次只能种一个正方形,而每种一个正方形时zzc所花的体力值是正方形的周长,种过的田不可以再种,zzc很懒还要节约体力去泡妹子,想花最少的体力值去种完这块田地,问最小体力值
输入输出格式
输入格式:
两个正整数x,y,表示田地的长和宽
输出格式:
输出最小体力值
输入输出样例
输入样例#1:
1 10
输出样例#1:
40
输入样例#2:
2 2
输出样例#2:
8
说明
1<=x,y<=10^16
贪心,每次都选长和宽中最长的边为正方形的边长
注意数据大小
#include#include #include #include #define LL long longusing namespace std;LL x,y,ans;LL read(){ LL x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar(); return x*f;}int main(){ x=read(),y=read(); while(y) { if(x>y) swap(x,y); ans+=4*x*(y/x),y%=x; } printf("%lld",ans); return 0;}