练习二 1005 汽车转弯问题

来源:互联网 发布:淘宝客服的奖金制度 编辑:程序博客网 时间:2024/05/16 01:25

简单题意:

       有一个直角街道,给出这两个接到的宽,再给出汽车的长度和宽度。问汽车可不可以转过去。

思路:

     这个题为典型的二分法。将角度看为变量,对于最大值为π/2,最小值为0.进行二分法计算,左后进行公式的推导,即数学模型的建立,运用公式即可。

代码如下:

#include<iostream>#include<cmath>using namespace std;const double PI=3.1415926; double a, b, l, w;double Pan(double k){    return (l*sin(k)+w/cos(k)-a)/tan(k);}int main(){    while(cin>>a>>b>>l>>w)     {         double l=0,max=PI/2,mid1,mid2;        while(max-l>=1e-8)         {             mid1=(max-l)/3+l;             mid2=(max-l)*2/3+l;             if(Pan(mid1)>=Pan(mid2))                 max=mid2;             else                 l=mid1;         }         if(Pan(mid1)-b>0) cout<<"no"<<endl;         else cout<<"yes"<<endl;     }     return 0; }

ACID:00755051

   


0 0