CF80B 题解
题意
给定一个时间,求从
分析
-
由于这题输入时会带有冒号,所以推荐大家熟用格式化输入。在使用
scanf时这样表达:"%d:%d",这样系统在输入的时候就会忽略这个字符,省的我们再去新建一个变量输入了。 -
考虑到钟表只会表示
12 个小时,所以输入12:00 和00:00 的结果是一样的。我们要按照00:00 的答案考虑,所以在输入的时候要判断如果小时大于12 就\bmod 12 。或者直接取余也行。 -
接下来推导结果:
由于按照小时来算太麻烦,我们按照分钟来算。那距离
12:00 过的时间就是h \times 60 + m 。当时针在钟上转了一整圈时已经过去了60 \times 12 = 720 分钟,而整个钟是360^\circ ,所以时针1 分钟就可以转360 \div 720 = 0.5^\circ ,所以最后再乘上0.5 即可。分针的角度就简单了,一小时
60 分钟,那第m 分钟就占了整个钟的\dfrac{m}{60} ,整个钟360^\circ ,那么公式就是360^\circ \times \dfrac{m}{60} 。再把360 和60 一约分,答案就变成了6m 。所以最终的答案为
( h \times 60 + m ) \times 0.5 和m \times 6 。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int HH,MM;
scanf("%d:%d",&HH,&MM);
HH%=12;
cout<<(double)(HH*60+MM)*0.5<<" "<<MM*6<<endl;
return 0;
}