Problem Description
The three hands of the clock are rotating every second and meeting each other many times everyday. Finally, they get bored of this and each of them would like to stay away from the other two. A hand is happy if it is at least D degrees
from any of the rest. You are to calculate how much time in a day that all the hands are happy.
 
Input
The input contains many test cases. Each of them has a single line with a real number D between 0 and 120, inclusively. The input is terminated with a D of -1.
 
Output
For each D, print in a single line the percentage of time in a day that all of the hands are happy, accurate up to 3 decimal places.
 
Sample Input
0
120
90
-1
 
Sample Output
100.000
0.000
6.251
#include <iostream>
#include <iomanip>
using namespace std;
#define vs 6.
#define vm 1./double(10)
#define vh 1./double(120) int main()
{
double D;
double T[3]= {(360./(vm-vh)),(360./(vs-vm)),(360./(vs-vh))}; ///时分 分秒 时秒 的相对周期
while(cin>>D && D!=-1)
{
double HS[3]= {(D/360.)*T[0],(D/360.)*T[1],(D/360.)*T[2]}; ///存储每对针的開始Happy时间
double HE[3]= {(360.-D)/360.*T[0],((360.-D)/360.*T[1]),((360.-D)/360.*T[2])}; ///存储每对针的结束Happy时间
double happyTime=0.,nextHS=HS[0],nextHE=min(HE[1],HE[2]);
while(HS[1]<43200-(D/360.)*T[0] && HS[2]<43200-(D/360.)*T[0])
{
nextHS= max(HS[0],max(HS[1],HS[2]));
nextHE= min(HE[0],min(HE[1],HE[2]));
happyTime += (nextHE-nextHS)>0.?nextHE-nextHS:0.;
for(int i=0; i<3; i++)
{
HS[i]+=(nextHE-HE[i]<0.?HE[i]-nextHE:nextHE-HE[i])<1e-15?T[i]:0.;
HE[i]+=(nextHE-HE[i]<0.? HE[i]-nextHE:nextHE-HE[i])<1e-15?T[i]:0.;
}
}
double result= happyTime/432.;
cout<<setiosflags(ios::fixed)<<setprecision(3)<<result<<endl;
}
return 0;
}

这个问题由特定牛的回答,门户:丹尼尔问题解决地址

Tick and Tick------HDOJ杭州电(无法解释,直接看代码)的更多相关文章

  1. hdu 1290 竭诚为杭州电礼物50周年

    专门为杭州电50周年礼事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  2. hdu1006 Tick and Tick

    原题链接 Tick and Tick 题意 计算时针.分针.秒针24小时之内三个指针之间相差大于等于n度一天内所占百分比. 思路 每隔12小时时针.分针.秒针全部指向0,那么只需要计算12小时内的百分 ...

  3. HDU 1006 Tick and Tick 时钟指针问题

    Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. hdu 1006 Tick and Tick 有技巧的暴力

    Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  5. HDU 1006 Tick and Tick(时钟,分钟,秒钟角度问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1006 Tick and Tick Time Limit: 2000/1000 MS (Java/Oth ...

  6. hdu 1006 Tick and Tick

    Tick and Tick Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  7. A == B ?(杭州电2054)

    A == B ? Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  8. 杭州电acm理工大舞台版

    我要参加全国软件设计大赛C/C++学生语言组,前一个假设<C训练和演习,并总结手>没看完,请阅读上述并根据所作的训练,然后做下面的练习. 门户:http://blog.csdn.net/l ...

  9. Tick and Tick

    The three hands of the clock are rotating every second and meeting each other many times everyday. F ...

随机推荐

  1. Python多线程的threading Event

    Python threading模块提供Event对象用于线程间通信.它提供了一组.拆除.等待用于线程间通信的其他方法. event它是沟通中最简单的一个过程之中,一个线程产生一个信号,号.Pytho ...

  2. doc-remote-debugging.html

    https://studio.zerobrane.com/doc-remote-debugging.html

  3. MQTT学习笔记——Yeelink MQTT维修 采用mqtt.js和paho-mqtt

    0 前言     2014年8月yeelink推出基于MQTT协议的开关类型设备控制API.相比于基于HTTP RESTful的轮训方式,通过订阅相关主题消息,能够远程控制类应用实时性更好. 本文使用 ...

  4. php编码规范个人小结

    1.原生态代码或者类的头上,注明作者,关键算法计算过程 例如 /** *@author zengmoumou *功能:根据列表ip,取得ip对应的运营商,省,市,县 */ 2.变量尽量用英文单词的组合 ...

  5. Sliverlight实例之 使用 ControlTemplate 自定义按钮的外观

    按钮,最终效果,如下图: 见Project21_ButtonSkin 1, 创建Sliverlight项目 说明: generic.xaml:样式和模板就被定义在这个文件里 MyButton.cs:控 ...

  6. SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法

    原文:SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法 在new SqlBulkCopy对象的时候,设置一下SqlBulkCopyOptions选项即可,按位或运算 SqlBulkC ...

  7. jquery处理页面元素

    处理父级页面中的元素 $(parent.document).find('#hidSendPerson').val(val);$(parent.document).find('#btnGo').clic ...

  8. basename, dirname 在C语言中的使用

    basename作用是得到特定的路径中的最后一个'/',后面的内容 如/usr/bin,得到的内容就是bin 如果/sdcard/miui_recovery/backup 得到的内容就是backup ...

  9. REPLICAT RORA_1保持 ABENDED状态,无法启动问题处理

    REPLICAT  RORA_1保持 ABENDED状态,无法启动问题 环境: Item Source System Target System Platform Red Hat Enterprise ...

  10. sqlite 中文排序

    看 http://www.cnblogs.com/08shiyan/archive/2012/05/11/2496491.html 这个方法 不太好用 最好的办法是 表添加pinyin字段. 插入数据 ...