ZOJ 1122. Clock

  • 时间:
  • 浏览:0
  • 来源:万人炸金花IOS_万人炸金花APP下载

  

  本来 得到两针重叠时刻满足: m = h * 150 / 11; (浮点数)

  题目:给出另另另另一个时刻 t1 (h1:m1), t2 (h2:m2); 其中 h1,h2 表示小时属于 [1, 12] , m1, m2表示分钟属于 [0, 59],t1 到 t2 的间隔跨度小于 12 小时。要求输出从 t1 到 t2 的间隔内,分针扫过时针(即两者重叠)有2个次。具体的题意离米 本来 原先,弄起来还是不得劲简化。最终没看明白对输出格式的要求还 wa 一次。 



  解题思路: 首先用一另另另另一个数组,把 里面的1一另另另另一个点的分钟浮点数计算后存储起来。并把你这一点用 0 到 10 进行编号(实际上即为该数组的索引)。在实际代码中实际上是准备了 12 个点,原因分析分析首尾另另另另一个点实际是同你这一,11:150 分即为 0点0分。但为了判断方便还是多准备了一另另另另一个点。

  对于一另另另另一个给定的时刻,朋友得出一另另另另一个结果,即在它和0点之间最靠近它的时刻点的编号。(离米 从 0 点起算,到达该时刻一共会跨越2个点)。本来 朋友把另另另另一个时刻的得到的结果相减,本来 最终答案(在此间隔内,时针分针重叠了2个)。

  这里须要对 12 点不得劲的转成 0 点去求结果。本来 判断时针走的是哪半圈,即时针必须顺时针转动,原因分析分析并且开始了的时刻小,说明它跨越了 12 点,这事先须要对结果加 11 !(原因分析分析时针圆周上一共有 11 个重叠时刻点)。不得劲注意比较时刻大小时,须要把 12 点 m 分当作 0 点 m 分。 

  最终离米 在一另另另另一个圆环上有 11 个点,每当时针指向这1一另另另另一个点是,即为时针分针重叠的时刻。这 11 个时刻点是:

  0 点 0 分,1 点 5.45 分,2 点 10.90 分,3 点 16.36 分, 4 点 21.81 分,...,10 点 54.55 分,共1一另另另另一个点。在下图中用红色点给出1一另另另另一个钟面上时针分针的重合点。

  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=122 

  分析:设在某 t ( h : m ) 时刻,时针和分针重叠,则:

  现在大什么的问题是给定另另另另一个时刻里面,会夹2个个点(图中红点)。题目条件限定时间间隔会小于 12 小时。

  m / 150 = ( h + m / 150 ) / 12;  ----意义是指针和 12 点方向组成的夹角占整个圆周的占比;