hdu_1006 Tick and Tick(暴力模拟)
2017-02-23 21:24
453 查看
hdu1006
标签(空格分隔): 暴力枚举好久没有打题了,退队了有好几个月了,从心底不依赖那个人了,原来以为的爱情戏原来都只是我的独角戏。之前的我有时候好希望有个人出现,告诉自己去哪里,做什么,哪种仅仅是渴望被爱的感觉都很美好,大概是因为离开了acm也不再依赖他所以现在我自己告诉自己,自己要去哪里,做什么,突然感觉很踏实,也不那么累了。现在我想把之前没有做好的做好,虽然我已经失去了最好的时机,但还是要在最忙的时间里抽出来做一些曾经有所遗憾的事情。
不多说了,上题!
开始推了半天公式,发现这个题要暴力模拟
其实是很简单的,要踏踏实实地反复去读条件,想清楚指针转动的情况就很简单了
/* 秒针的速度s=6°/s,分针是m=1/10°/s,时针是h=1/120°/s; 相对速度s_m=59/10°/s,s_h=719/120°/s,m_h=120/11°/s; 所以相差一度所需要的时间sm=10/59 s/°,sh=120/719 s/°,mh=120/11 s/°; 差360°的周期为cycle_sm=3600/59 s,cycle_sh=43200/719 s,cycle_mh=43200/11 s; 假设开始时从12点整开始,旋转至再均回到12点(即时针转一圈) */ double max(double a,double b,double c){ return a>b?(a>c?a:c):(b>c?b:c);} double min(double a,double b,double c){ return a<b?(a<c?a:c):(b<c?b:c);} #include <stdio.h> int main() { double d; double cycle_sm=3600./59.; double cycle_sh=43200./719.; double cycle_mh=43200./11.;//这三行是时针、分针、秒针两两相遇的周期 double sum; double happys,happye;//开始happy和结束happy的时刻 double sm=10./59.,sh=120./719.,mh=120./11.;//相差一度所需要的时间 double d_sm,d_sh,d_mh,not_d_sm,not_d_sh,not_d_mh;//表示相差d°及以上的时刻和不再相差d°及以上的时刻 while(scanf("%lf",&d)!=EOF&&d!=-1) { sum=0; d_sm=sm*d; not_d_sm=cycle_sm-d_sm; d_sh=sh*d; not_d_sh=cycle_sh-d_sh; d_mh=mh*d; not_d_mh=cycle_mh-d_mh; happys=max(d_sm,d_sh,d_mh); happye=min(not_d_sm,not_d_sh,not_d_mh); while(happys<=43200&&happye<=43200)//43200是时针针转一圈的秒数 { happys=max(d_sm,d_sh,d_mh);//两两之间最后一个满足相差d°及以上的条件视为开始happy时刻 happye=min(not_d_sm,not_d_sh,not_d_mh);//两两之间第一个不再满足相差d°及以上视为结束happy的时刻 if(happys<happye) sum+=happye-happys;//如果end的时间比start的晚,由sum记录并累积 if(happye==not_d_sm) {d_sm+=cycle_sm;not_d_sm+=cycle_sm;} else if(happye==not_d_sh) {d_sh+=cycle_sh;not_d_sh+=cycle_sh;} else if(happye==not_d_mh) {d_mh+=cycle_mh;not_d_mh+=cycle_mh;}//happy时间end后最慢的指针要提前一个周期才能让比它快的再次追上 } printf("%.3lf\n",sum/43200*100); } return 0; }
‘
相关文章推荐
- HDU 1006 Tick and Tick 模拟
- [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]
- hdu 1006 Tick and Tick 模拟时钟注意时间连续性!
- HDU-1006 Tick and Tick(模拟 + 区间交集 + 数学)
- HDU 1006 Tick and Tick
- Hdu 1006 Tick and Tick
- HDU 1006 Tick and Tick
- HDU:1006 Tick and Tick
- HDU 1006 Tick and Tick 时钟指针问题
- hdu 1006 Tick and Tick
- hdu 1006 Tick and Tick
- HDU-1006 Tick and Tick 几何
- HDU-1006-Tick and Tick
- HDU 5336 - XYZ and Drops(暴力模拟)
- HDU 1006 Tick and Tick
- HDU 1006 Tick and Tick 解不等式解法
- [HDU]1006 Tick and Tick
- hdu 1006 Tick and Tick
- HDU 1006 Tick and Tick
- hdu 1006 Tick and Tick (解不等式方程)