解析

由于本题数据量较小,考虑直接用dfs解决,根据题意可得,若要把矩形切n-1次使之体积相等的块,考虑对每个x/n与y/n 进行枚举,dfs返回当前的矩形的最小的最大边长比即可

#include <bits/stdc++.h>
#define inf 1000000007
#define eps 0.000001
using namespace std;

typedef long long ll;
typedef unsigned long long ull;

const int maxn=100005;
double seg=0;
double dfs(double x,double y,double n)
{
    if(n==1){
        return max(x,y)/min(x,y);
    }
    double rate=inf;
    for(double i=1;i<=n/2;i++){//此处应定要加上等于,不然对半分时会遍历不到
        rate=min(rate,max(dfs(i*(seg/y),y,i),dfs((n-i)*(seg/y),y,n-i)));
    }
    for(double j=1;j<=n/2;j++){
        rate=min(rate,max(dfs(x,j*(seg/x),j),dfs(x,(n-j)*(seg/x),n-j)));
    }
    return rate;
}

int main()
{
    double x, y, n;
    scanf("%lf%lf%lf",&x,&y,&n);
    seg=x*y/n;
    double z=dfs(x,y,n);
    printf("%.6f",z);
    return 0;
}