专题二 · 1005

来源:互联网 发布:橡皮网组卷 源码 编辑:程序博客网 时间:2024/04/28 06:51

代码及解释

#include <stdio.h>#include <math.h>// 拐弯的问题// 高中数学做过一个很类似的// 关键是在转向的时候,值不是单调的// 所以不用二分const double PI = acos(-1.0);double x,y,l,w,s,h;double ankle(double a) {    s = l * cos(a) + w * sin(a) - x;    h = s * tan(a) + w * cos(a);    return h;}int main() {            while(scanf("%lf%lf%lf%lf", &x, &y, &l, &w)!=EOF) {        double left = 0.0;        double right = PI/2;                double mid1 = 0.0;                while(fabs(right-left) > 1e-8) {            mid1 = (left + right) / 2;            double midmid2 = (mid1 + right) / 2;                        if(ankle(mid1) >= ankle(midmid2))                right = midmid2;            else                left = mid1;        }                if(ankle(mid1)<=y)            printf("yes\n");        else            printf("no\n");    }    return 0;}


0 0
原创粉丝点击