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

题意:

24小时中,三个指针之间超过某个度数的时间占所有时间的百分比是多少。

思路:主要是物理和数学的综合 难在相对速度的运用
秒钟的速度

s=6°/s,分针是1/10°/s,时针是1/120°/s

所以相对速度

s_m=59/10°/s,s_h=719/120°/s,m_h=11/120°/s
所以相差一度所需要的时间

sm=10/59 s/°,sh=120/719 s/°,mh=120/11 s/°
他们差360°的周期为

tsm=3600/59 s,tsh=43200/719 s,tmh=43200/11 s
需要相差的角度为n。
rsm>n → n*sm+k1*tsm < t < tsm-n*sm+k1*tsm;
rsh>n → n*sh+k2*tsh < t < tsh-n*sh+k2*tsh;
rmh>n → n*mh+k3*tmh < t < tmh-n*mh+k3*tmh;
三个条件都满足所占的总时间即为时针、分针、秒针相差角度大于n的总时间

在对两两指针之间满足条件的开始时间和结束时间进行遍历(三重循环),把所有满足条件的时

间累加起来就是所求满足条件的总时间。最后结果为:满足条件的总时间/43200*100。

 #include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
// 秒针速度 s = 6°/s 分针速度 m = 1/10° /s 时针 h = 1/120° /s
const double SH = 719.0/, SM = 59.0/, MH = 11.0/;//Relative angular velocity 相对角速度
const double tSH = 43200.0/, tSM = 3600.0/, tMH = 43200.0/; double Min(double a,double b,double c)
{
return min(a,min(b,c));
} double Max(double a,double b,double c)
{
return max(a,max(b,c));
} int main()
{
double D;
while(cin >> D && D!=-)
{
double bSH,bSM,bMH,eSH,eSM,eMH,Begin,End,Sum = ;
bSH = D / SH;
bSM = D / SM;
bMH = D / MH;
//计算第一次开始时间
eSH = (-D)/SH;
eSM = (-D)/SM;
eMH = (-D)/MH;
//计算第一次结束时间
for(double b3 = bSH,e3 = eSH; e3 <= 43200.000001; b3+=tSH,e3+=tSH)
{
for(double b2 = bMH,e2 = eMH; e2 <= 43200.000001; b2+=tMH,e2+=tMH)
{
if(e2 < b3) //判断是否有交集
continue;
if(e3 < b2)
break;
for(double b1 = bSM,e1 = eSM; e1 <= 43200.000001; b1+=tSM,e1+=tSM)
{
if(e1 < b2 || e1 < b3)
continue;
if(b1 > e2 || b1 > e3)
break;
Begin = Max(b1,b2,b3); //开始时间取最大,以满足全部要求
End = Min(e1,e2,e3); //结束时间取最小,以满足全部要求
Sum += (End-Begin);
}
}
}
printf("%.3lf\n",Sum/);
}
return ;
}

1006 Tick and 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. 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. hdu1006 Tick and Tick

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

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

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

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

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

  8. Tick and Tick

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

  9. hdu_1006 Tick and Tick(暴力模拟)

    hdu1006 标签(空格分隔): 暴力枚举 好久没有打题了,退队了有好几个月了,从心底不依赖那个人了,原来以为的爱情戏原来都只是我的独角戏.之前的我有时候好希望有个人出现,告诉自己去哪里,做什么,哪 ...

随机推荐

  1. axure--中继器

    *****中继器-repeater*****1.结构:类似于MVC(增删查改)1)中继器数据集:可包括图片.文字.网址(页面)(右键添加,列名尽量使用英 文或拼音) 2)中继器格式:横向.纵向(是否换 ...

  2. golang 中操作nsq队列数据库

    首先先在本地将服务跑起来,我用的是docker-compose ,一句话6666 先新建一个docker-compose.yml version: '2' services: nsqlookupd: ...

  3. php抽奖概率算法

    方法一: function get_rand($proArr) { $result = array(); foreach ($proArr as $key => $val) { $arr[$ke ...

  4. 关于文件I/o的原子操作

    [摘自<Linux/Unix系统编程手册>] 所有系统调用都是以原子操作方式执行的.这里是指内核保证了某系统调用中的所有步骤会作为独立操作而一次性执行,其间不会为其它进程或线程所中断. 原 ...

  5. 【回顾】html简介、基础、元素

    1.简介 什么是HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言 标 ...

  6. sendEmail 阿里云使用587端口

    使用sendEmail使用参数   -o tls=yes -s smtp服务器+端口 因为阿里云屏蔽了25端口,我使用465也不成功,只有使用587端口,我使用的qq企业邮箱,测试可用

  7. eclipse发布后在tomcat下没有文件夹,服务器的Server locations不能修改

    主要是因为Server locations中的deploy路径不正确,要修改这个路径,需要移除服务器中的所有项目,然后点击清空,这时再双击服务器,既可修改这个设置.

  8. XXE (XML External Entity Injection) 外部实体注入漏洞案例分析

    ENTITY 实体 在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它. XML定义了两种类型的ENTIT ...

  9. Linux read line

    cat ./port_list|while read linedo done

  10. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第一集之安装VMware】

    [Java全技术路线开发]:https://jq.qq.com/?_wv=1027&k=5knQcPc   由于自己已经安装了VMware,本想转载一篇百度经验的教程,但是我对安装过程有些异议 ...