- 娜娜梦游仙境系列——梦醒

来源:互联网 发布:没有基础学sql 编辑:程序博客网 时间:2024/04/28 09:32

Problem Description

娜娜离开了这个王国,走向远方,在旷野上,娜娜看到了一个大时钟,上面的时针分针秒针都在缓缓转动,那只挥着翅膀的天使又出现了,天使说:“外面天已经亮了,娜娜你别睡过头哟~”,娜娜问:“我怎样才能醒过来呢?”,天使说:“只要这个钟的时针和分针重合,你就可以进入时光隧道,离开这个地方。”

 

那你能告诉娜娜还有多久时针和分针才会重合吗?

Input

多组数据,第一行是一个正整数t(t<=100,000),表示数据的组数

对于每组数据,为一个时刻,格式为hh:mm:ss分别表示当时的时、分、秒(采用24小时计时法,范围从00:00:00~23:59:59)

Output

对于每组数据,输出一个浮点数,表示距离下一次时针和分针重合的秒数,误差在1e-4以内将会视为正确。

Sample Input

223:59:5900:00:00

Sample Output

1.0000003927.272727

Hint

本题采用special judge
题意:给一个时刻,问距离下一次时针和分针重合还需要多少秒。解法:一天以内时针和分针总共重合24次,可以把这24个时刻都计算出来,其实就是12/11的整数倍小时,换算成秒就是12*3600/11*k秒(k=1,2,...,24),然后对于每一个时刻,枚举搜索下一次重合的时刻是哪一个,相减即可。这个是怎么计算出来的呢?我们肯定能确定00:00:00,时针和分针会重合,那么下一次重合是什么时候呢?时针转过一圈是12小时,在这12小时中,时针和分针正好重合了11次,所以相邻两次重合的间隔就是12/11小时。把每小时重合的秒钟数保存后计算。{(s/3600+h)*30=s/3600*360  -> s=3600/11*h }
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>using namespace std;int main(){    int t;    int h,m,s;    scanf("%d",&t);    while(t--)    {        scanf("%d:%d:%d",&h,&m,&s);        int now =(h*60+m)*60+s;        for(int i=0;i<24;++i)        {            if(now<i*12.0/11*3600)            {                printf("%.8f\n", i*12.0/11*3600-now);                break;            }        }    }    return 0;}


0 0
原创粉丝点击