题目传送门
。。
解法:
首先他要面积一样。
那肯定对于每一块都是均分啊。
而且。。
N<=10
不说了。
搜索
代码实现:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
double dfs(double x,double y,int d) {
if(x<y)swap(x,y);
if(d==1) return x/y;
double xx=x/double(d)*1.0,yy=y/double(d)*1.0;double ans=10000;
for(int i=1;i<=d/2;i++) {
double s1=max(dfs(xx*i,y,i),dfs(x-xx*i,y,d-i));
double s2=max(dfs(x,yy*i,i),dfs(x,y-yy*i,d-i));
ans=min(ans,min(s1,s2));
}return ans;
}
int main() {
double x,y;int n;
scanf("%lf%lf%d",&x,&y,&n);printf("%.6lf\n",dfs(x,y,n));
return 0;
}