题目链接: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;
}

  

最新文章

  1. js数组去重的4种方法
  2. UIViewController的生命周期
  3. poj 2155:Matrix(二维线段树,矩阵取反,好题)
  4. SQL 养成一个好习惯是一笔财富
  5. 破解php-screw加密过的文件有效方法
  6. Python实现SVM(支持向量机)
  7. -_-#【Backbone】View
  8. Android 代码设置密码输入框内容的显示/隐藏
  9. C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案
  10. jQuery对表单元素的取值和赋值操作代码(转)
  11. Day042---浮动 背景图设置 相对定位绝对定位
  12. 《剑指offer(第二版)》面试题64——求1+2+...+n
  13. 嘿!我用python帮我干这些事
  14. 洛谷P1162 填涂颜色【bfs】
  15. 用R的igraph包来画蛋白质互作网络图 | PPI | protein protein interaction network | Cytoscape
  16. oracle 恢复错误修改数据 寒冬冒冷汗!!
  17. Ubuntu Server17.10配置静态IP
  18. Redis java client ==&gt; Jedis
  19. JS设计模式——8.桥接模式
  20. 基于消逝时间量的共识机制(POET)

热门文章

  1. RPC(Remote Procedure Call Protocol)——远程过程调用协议
  2. HTML学习(六)图像
  3. CSS3 Media Queries 详解
  4. 对AD域进行定期自动备份设置图解
  5. Delphi调用Android的.so文件(转)
  6. 全方位分析Objcetive-C Runtime
  7. UVa 481 - What Goes Up
  8. UVa 10041 - Vito&#39;s Family
  9. iOS 编程小知识 之 本地化
  10. Spring mvc系列一之 Spring mvc简单配置