题目概述
有一个边长分别为
x
和
解题报告
首先想到二分,但是并没有什么作用,因为并不知道长边或短边,枚举肯定是不行的。但是我们发现切的次数非常少,所以可以搞事情,想到DFS。由于要保证最后所有的蛋糕面积相同,所以必须按照比例切。
目前边长为
示例程序
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=10000;
int x,y,n;
double Dfs(double x,double y,int n)
{
if (n==1) return max(x,y)/min(x,y);double ans=1e100;
for (int i=1;i<n;i++) ans=min(ans,max(Dfs(x*i/n,y,i),Dfs(x*(n-i)/n,y,n-i)));
for (int i=1;i<n;i++) ans=min(ans,max(Dfs(x,y*i/n,i),Dfs(x,y*(n-i)/n,n-i)));
return ans;
}
int main()
{
freopen("program.in","r",stdin);
freopen("program.out","w",stdout);
scanf("%d%d%d",&x,&y,&n);
return printf("%.6lf\n",Dfs(x,y,n)),0;
}