时针、分针和秒针重合问题

题目:

    在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?

分析:

先求角速度:(度/秒)

     1. 时针:w1 = 360 / 12*3600 = 1/120 d/s

     2. 分针:w2= 360 / 3600 = 0.1 d/s

    3. 秒针:w3 = 360 / 60 = 6 d/s

 设3个针当中,快针角速度为wf,慢针角速度为ws。若快针在一天24小时中,转k = 0, 1, 2, 3, … , n圈的时候,重合慢针的时间为t,则:

        wf * t - k*360 = ws*t – [ws/wf * k] *360//当一个指针转k圈的时候,另外一个转 [ws/wf * k]圈

         t = 360*( k - [k*ws/wf] ) / (wf - ws)

代码如下:

public class Times_Overlap {

    public static void main(String[] args) {

      // TODO Auto-generated method stub

        double w1=1.0/120; //时针角速度

        double w2=0.1,w3=6; //分针、秒针角速度

        time_overlap(w1,w2);

        time_overlap(w2,w3);

    }

    static void time_overlap(double ws,double wf ){

      int n = (int)(24 * 3600 * wf / 360); //快针一共可以转多少圈

      int[] times=new int[n]; int count=1;

      times[0]=0;

      for(int k=0;k<n-1;k++){

          int t =(int)( 360 * (k - (int)(k * ws / wf)) / (wf - ws));         

          if(times[count-1]!=t){times[count]=t;count++;}

      }

    for(int i=0;i<=count;i++){

          int h=times[i]/3600;int m=(times[i]-h*3600)/60;int s=times[i]-h*3600-m*60;

          System.out.print("overlap times are ");

          System.out.print("("+(i+1)+")"+h+":"+m+":"+s+"  "); 

    }

  }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 8,759评论 0 2
  • Java经典问题算法大全 /*【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子...
    赵宇_阿特奇阅读 5,938评论 0 2
  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 6,022评论 0 2
  • 朋友圈营销时间分布攻略: 早上7:00——8:00。 这个时间大家刚刚起床或者正走在上班路上,比较无聊,需要看些内...
    享随笔阅读 8,458评论 0 1
  • 我所尊崇的君主大地的母亲身子变成了宇宙眼睛变成了日头你既做了世界的主宰也一定会成为我的知己我和世间所有高贵的诗人一...
    邹海诗歌阅读 1,469评论 1 5