关于Online Judge题目tick and tick的数学公式推导

来源:互联网 发布:儿童电脑画图软件 编辑:程序博客网 时间:2024/05/17 22:35

题目大意:
一个钟的三个指针在不停的转动,他们已经厌烦了这样,当他们互相的距离角度大于等于D时,他们会很开心,问一天之中他们happy的时间占总时间的概率。
我觉得这是在解不等式,我原来使用的暴力破解,毫无疑问失败了;我们只要找到某一分钟内,他们happy的时间,然后钟每过12个小时相当于43200秒复原一次。因此总时间就是43200白秒,只要求出在这43200的happy时间,答案就知道了;
假设现在的时钟是h小时,m分钟,s秒,给定的角度为degree;则列出happy的不等式有
时针到0时刻的角度的实际值为hw = (h+m/60+s/3600)*30,分针的角度mw = (m+s/60)*6,秒针的角度为sw = s*6;则他们都happy的条件为
degree<|hw -mw|<360 - degree;
degree<|hw - sw|<360 - defgree;
degree<|sw - mw|<360 - degree ;
解这三个不等式即可得到s的区间,把区间的最大值减去最小值就是happy的时间,把每小时每分钟的happy时间再叠加,就是总的happy时间了,再除以总时间的百分比并保留三个小数就是答案。

interval solve(double v,double a){//解方程          //Angle<=v*t+a<=360-Angle;,并且和[0,60]取交集          interval p;          if(v>0){              p.l=(Angle-a)/v;              p.r=(360-Angle-a)/v;          }          else{              p.l=(360-Angle-a)/v;              p.r=(Angle-a)/v;          }          if(p.l< 0)p.l= 0;          if(p.r>60)p.r=60;          if(p.l>=p.r)p.l=p.r=0;          return p;      }      interval jiao(interval a,interval b){          interval p;          p.l=max(a.l,b.l);          p.r=min(a.r,b.r);          if(p.l>=p.r)p.l=p.r=0;          return p;      }      /*解方程 Angle<=|hh-mm|<=360-Angle*/      /* Angle <= |30*h + m/2 + s/120 - 6*m - s/10| <= 360-Angle*/    v_diff= 1.0/120.0 - 1.0/10.0; //second      a_diff= 30*h + m/2.0 - 6.0*m; //时针分针夹角      s0[0][0]=solve( v_diff, a_diff);      s0[0][1]=solve(-v_diff,-a_diff);      /*解方程 Angle<=|hh-ss|<=360-Angle*/     /* Angle<=|30*h + m/2 + s/120 - s*6|<=360-Angle */      v_diff= 1.0/120-6.0;      a_diff= 30*h+m/2.0;//时针秒针夹角      s0[1][0]=solve( v_diff, a_diff);      s0[1][1]=solve(-v_diff,-a_diff);      /*解方程 Angle<=|mm-ss|<=360-Angle*/      /*Angle<=|6*m + s/10 - s*6|<=360-Angle*/    v_diff=1/10.0 - 6;      a_diff= 6*m;//分针秒针夹角      s0[2][0]=solve( v_diff, a_diff);      s0[2][1]=solve(-v_diff,-a_diff);  

根据上述代码我们不难看出这个不等式 Angle <= | ax + b| <=360 - Angle 被转换为:
Angle <= ax + b < 360 - Angle && Angle <= -ax -b <= 360 - Angle,由于这个数学公式在高中学的,差不多还给老师了,于是自己有推算了一遍,如下图:
这里写图片描述

0 0
原创粉丝点击