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\n",ans); } return 0; }