Gym 100801A Alex Origami Squares (求正方形边长)

题目:传送门。(需要下载PDF)

题意:给定一个长方形,在长方形内部画三个相同的正方形,问正方形的边长最大是多大。

题解:根据长宽比例可以算出三种情况,如果长比宽大三倍以上,那么正方形边长就是宽;如果长在宽的1.5倍到3倍之间,那么正方形边长就是长/3;如果长在宽的1到1.5倍之间,那么就看做是在长方形内部画一个田字,正方形边长就是宽/2。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
    freopen("alex.in","r",stdin);
    freopen("alex.out","w",stdout);
    double h,w;
    while(scanf("%lf%lf",&h,&w)!=EOF)
    {
        double ans;
        if(w>h) swap(w,h); //h大
        if(h>3*w)
        ans=w;
        else if(h>3.0*w/2.0)
        ans=h/3.0;
        else
        ans=w/2.0;
        printf("%.6f
",ans);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Ritchie/p/5744822.html