题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1006

题目大意:钟表有时、分、秒3根指针。当任意两根指针间夹角大于等于n°时,就说他们是happy的,问一天有百分之多少时间是happy的。

关键思想:两根指针两根指针地考虑,从重合到重合中有且仅有一段连续时间这两根指针是happy的。共有3种组合(时分、分秒、时秒),所以若以时间为横轴,夹角为纵轴,图像为三个连续三角形。另y大于等于n,得到的图像求符合区间的长度。

代码如下:

//多个连续三角区域求符合要求部分的区间长度
#include <iostream>
using namespace std; const double sv=6.00, mv=0.10, hv=1./120;
const double m_s=sv-mv, h_m=mv-hv, h_s=sv-hv; // 时分、时秒、分秒3组相对速度 int main(){
double sum=0;
double n;
while(cin>>n&&n!=-1){
sum=0;
double bms=n/m_s,ems=(360-n)/m_s,tms=360./m_s; //时分、时秒、分秒3组起始时间和终止时间以及周期
double bhm=n/h_m,ehm=(360-n)/h_m,thm=360./h_m;
double bhs=n/h_s,ehs=(360-n)/h_s,ths=360./h_s;
//12小时足矣 。.000001是为了防止漏跑一次。若除去会导致输入为0时结果不是100.
for(double a1=bhm,a2=ehm;a2<=43200.000001;a1+=thm,a2+=thm){
for(double b1=bms,b2=ems;b2<=43200.000001;b1+=tms,b2+=tms){
if(b2<a1)continue; //优化,否则TLE
if(b1>a2)break;
for(double c1=bhs,c2=ehs;c2<=43200.000001;c1+=ths,c2+=ths){
if(c2<a1 || c2<b1)continue;
if(c1>a2 || c1>b2)break;
sum+=
min(min(a2,b2),c2)-max(max(a1,b1),c1);//找三组都happy的时间,即"最晚始"在"最早终"之前的时间段。
}
}
}
printf("%.3lf\n",sum/432);
}
return 0;
}

  

HDU 1006 [Tick Tick]时钟问题的更多相关文章

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

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

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

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

  3. [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]

    Problem Description The three hands of the clock are rotating every second and meeting each other ma ...

  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

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

  6. HDU 1006 Tick and Tick 解不等式解法

    一開始思考的时候认为好难的题目,由于感觉非常多情况.不知道从何入手. 想通了就不难了. 能够转化为一个利用速度建立不等式.然后解不等式的问题. 建立速度,路程,时间的模型例如以下: /******** ...

  7. HDU 1006(时钟指针转角 **)

    题意是说求出在一天中时针.分针.秒针之间距离均在 D 度以上的时间占比. 由于三针始终都在转动,所以要分别求出各个针之间的相对角速度,分别求出三针满足角度差的首次时间,再分别求出不满足角度差的最终时间 ...

  8. HDU 1006 模拟

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

  9. HDU 1006 Digital Roots

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

随机推荐

  1. CG之基本光照模型计算公式

    在一个基本模型里,一个物体表面的颜色是由放射(emissive).环境反射(ambient).漫反射(diffuse)和镜面反射(specular)等光照作用的总和.每种光照作用取决于表面材质的性质( ...

  2. MAC OSX 10.10 下安装PHP环境

    Apache和PHP已经在系统里面预装好了,只要你开启即可使用.这篇文章给大家介绍如何开启并设置好PHP开发环境. 1.开启默认Apache服务 打开终端命令行,输入如下命令就会开启Apache了.然 ...

  3. (译)Windsor入门教程---第四部分 整合

    介绍:     目前为止,已经介绍了应用程序的各个部分.首先是添加了Windsor程序集,然后是添加了控制器工厂,还添加了installer类来注册控制器.虽然但是我们还没用在应用程序中调用他们.在这 ...

  4. Seajs是什么及其优缺点&如何使用?

    这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享! 1.Seajs简介   Seajs,一个Web模块加载框 ...

  5. iOS开发——Xcode快捷键

    1.共用的一些方法 Command + A: 全选Command + C: 复制Command + V: 粘贴Command + X: 剪切Command + Z: 撤销Shift + Command ...

  6. 一个php开发的用于路由器的小功能

    最近接到一个需求,假设有A.B.C 三台主机.现A主机要访问C主机上的一个脚本,并且根据A传递的参数给C主机,同时接受C主机返回来的数据.但是现在A主机不能直接通过url.IP访问C主机,需要借由主机 ...

  7. JS数字金额大写转换

    /** 数字金额大写转换(可以处理整数,小数,负数) */ var digitUppercase = function(n) { var fraction = ['角', '分']; var digi ...

  8. builds error

    使用cocoapods 出现Undefined symbols for architecture i386: _OBJC_CLASS_$_XXXXXXX", referenced from: ...

  9. JavaScript------处理Json数据

    //JSON相关函数 JSON.parse(); //将JSON字符串转换为JavaScript对象JSON.stringify(); //将JavaScript值转换为JSON字符串 1.//JSO ...

  10. sql2000/sql2005/sql2008数据库变为0字节修复/MDF文件0字节恢复

    [数据恢复故障描述]  这个客户是生产型数据库,数据比较重要,产生量也比较大,客户要求必须尽快修复,保证生产尽快恢复运行.sql数据库文件,由于碎片链接过长,mdf文件突然变为0字节,开始客户尝试自行 ...