zoukankan      html  css  js  c++  java
  • hdu_5705_Clock("巴卡斯杯" 中国大学生程序设计竞赛

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

    题意:给你一个时间和一个角度,问你下一个时针和分针形成给出的角度是什么时候

    题解:我们可以将这个问题看成追及问题,考虑时针:每小时30°,每分钟1/2°,每秒1/120°,考虑分针:没分钟6°,每秒1/10°,如果我把全部同时乘一个120,不就能避免精度造成的问题了吗!现在再来考虑时针和分针的位置情况:这里我们以分针按顺时针的方向到时针


    1:当时针和分针的θ∠大于180*120时(1)当(360*120-θ)大于给出的角度an时,需要的时间ans=h+(θ-an*120)/11,/11是因为每秒钟时针走1°,分针走12°。(2)当(360*120-θ)小于给出的角度an时,需要的时间ans=h+(θ-(360-an)*120)/11

    2:当时针和分针的θ∠小于180*120时(1)当(360*120-θ)大于给出的角度an时,需要的时间ans=h+(θ-an*120)/11。(2)当(360*120-θ)小于给出的角度an时,需要的时间ans=h+(θ+an*120)/11。

    最后再根据经过的时间算出当前的时间

     1 #include<cstdio>
     2 int hh,mm,ss,ic=1,h,m,s,an,d,ans,mo=120*360,mod=120*180;
     3 void fuck(){
     4     s++,h=(3600*h+m*60+s)%mo,m=(m*720+12*s)%mo,d=(h+mo-m)%mo;
     5     if(d>=mod)if(an*120<mo-d)ans=h+(d-an*120)/11;else ans=h+(d-(360-an)*120)/11;
     6     else if(an*120<=d)ans=h+(d-an*120)/11;else ans=h+(d+an*120)/11;
     7 }
     8 int main(){
     9     while(~scanf("%d:%d:%d%d",&h,&m,&s,&an))
    10     fuck(),printf("Case #%d: %02d:%02d:%02d
    ",ic++,ans/3600%12,ans/60%60,ans%60);
    11     return 0;
    12 }
    View Code



  • 相关阅读:
    codis安装手册
    引用对象的使用和易产生bug的示例
    shallow copy 和 deep copy 的示例
    [转载] 公知其实就是正常人嘛
    Spring GET请求实体中日期的转换
    [转载] 方方: 借陸遊三個字:錯,錯,錯(3月16日)
    [转载] 英国防疫怪招
    [记录] Disruptor 介绍
    [记录] 重要网址备忘
    [转载] 面对新冠病毒在全球的大流行,我们如何自保?
  • 原文地址:https://www.cnblogs.com/bin-gege/p/5696125.html
Copyright © 2011-2022 走看看