尝试过改成循环,结果是T飞辣!
by Rainsleep @ 2022-07-17 19:31:12
“While” Code:
```cpp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//考虑当我选取的矩形最大时我的体力值耗费最少
//题目给定一定为矩形
//画图发现其实就是每次在矩阵中选择一个最大的正方形,加上其周长
//递归处理割去最大正方形的矩形
ll n,m,res(0);
unsigned long long Area;
inline void solve(int l,int w)
{
if(Area == 0)
{
printf("%lld",res);
exit(0);
}
int Edge(min(l,w));
res+=Edge*4;
Area -= pow(Edge,2);
solve(max(l,w)-Edge,Edge);
}
int main()
{
scanf("%lld %lld",&n,&m);
Area = n*m;
//solve(n,m);
bool flag = n < m ;
while(Area)
{
int Edge(flag ? n : m);
res+=Edge*4;
Area -= pow(Edge,2);
flag ? m-Edge,n=Edge : n-Edge, m=Edge ;
}
printf("%d",res);
return 0;
}
/*
5 3
25
*/
```
by Rainsleep @ 2022-07-17 19:34:48