zoj 1608 Two Circles and a Rectangle

觉得这题数据弱了,我没加精度判断居然1A了。。。><。。。

 

我直接画图,列方程,用求根公式的。画图,算出放进去一个最大的圆之后,能放进另一个圆的最大半径,然后和另一个圆对比。

 

求根公式需要取中间为减号的那个,得到两个结果肯定要舍去大于矩形边长的,我木有判断,直接取减号居然A掉了。。。

 

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> #include <algorithm> #include <queue> #include <stack> #include <math.h> using namespace std; int main() { double a,b,r,R; while( ~scanf("%lf %lf %lf %lf",&a,&b,&r,&R) ) { if( r > R ) swap(r,R); if( a < 2*R || b < 2*R ) { printf("No/n"); continue; } double A = 1.0; double B = -2*(a + b - R); double C = b*b + a*a - 2*(a+b)*R + R*R; if( B*B - 4*A*C < 0 ) { printf("No/n"); continue; } double mr = (-B - sqrt(B*B - 4*A*C))/(2*A); if( mr >= r ) printf("Yes/n"); else printf("No/n"); } return 0; }

你可能感兴趣的:(c)