1006 Tick and Tick
题目: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的更多相关文章
- HDU 1006 Tick and Tick(时钟,分钟,秒钟角度问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1006 Tick and Tick Time Limit: 2000/1000 MS (Java/Oth ...
- HDU 1006 Tick and Tick 时钟指针问题
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1006 Tick and Tick 有技巧的暴力
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu 1006 Tick and Tick
Tick and Tick Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- hdu1006 Tick and Tick
原题链接 Tick and Tick 题意 计算时针.分针.秒针24小时之内三个指针之间相差大于等于n度一天内所占百分比. 思路 每隔12小时时针.分针.秒针全部指向0,那么只需要计算12小时内的百分 ...
- [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]
Problem Description The three hands of the clock are rotating every second and meeting each other ma ...
- HDU 1006 Tick and Tick 解不等式解法
一開始思考的时候认为好难的题目,由于感觉非常多情况.不知道从何入手. 想通了就不难了. 能够转化为一个利用速度建立不等式.然后解不等式的问题. 建立速度,路程,时间的模型例如以下: /******** ...
- Tick and Tick
The three hands of the clock are rotating every second and meeting each other many times everyday. F ...
- hdu_1006 Tick and Tick(暴力模拟)
hdu1006 标签(空格分隔): 暴力枚举 好久没有打题了,退队了有好几个月了,从心底不依赖那个人了,原来以为的爱情戏原来都只是我的独角戏.之前的我有时候好希望有个人出现,告诉自己去哪里,做什么,哪 ...
随机推荐
- day4-list,列表
dist: 增:1.append(obj),在列表最后添加元素: 2.insert(index,object),在索引处添加元素: 3.extend,迭代添加元素,所添加元素必须可迭代. 删:1.po ...
- 谷歌、火狐浏览器 缩放为80% 时,margin值才正确
声明:小白的笔记,欢迎大神指点.联系QQ:1522025433. 在网页布局中,通过 谷歌浏览器或火狐浏览器 预览时,发现我们定义的盒模型width,height,margin,padding 值都是 ...
- mysql+redis+memcached
mysql+redis+memcached 数据库 数据库设计 a. 单表 b. FK(单表:一张表存储时,如果有重复出现的字段为了防止硬盘的浪费,所以做一个FK:去掉FK变成单表(这样子访问速度快了 ...
- C# 不使用递归遍历目录树中的文件和文件夹
public class StackBasedIteration { static void Main(string[] args) { // Specify the starting folder ...
- 【转】asp.net Core 系列【一】——创建Web应用
ASP.NET Core 中的 Razor 页面介绍 Razor 页面是 ASP.NET Core MVC 的一个新功能,它可以使基于页面的编码方式更简单高效. 若要查找使用模型视图控制器方法的教程, ...
- 去掉A标签的点击选中边框
非IE a:focus { outline:none; }
- config.GetSection(key)编译不通过
要安装这个版本
- zookeeper 学习 zookeeper下载部署
下载 http://mirror.bit.edu.cn/apache/zookeeper/ 校验 解压后得到zookeeper-3.4.10.jar,使用md5sum zookeeper-3.4.10 ...
- alpha冲刺10/10
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之10(匆匆而过) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 答辩演练 版本演示视频拍摄 接下来的计划 ...
- JMeter中BeanShell Sampler调试分享
BeanShell脚本 String s = "s"; String y = "y"; boolean result = s.equals(y); vars.p ...