一天内时分秒的重合次数

来源:互联网 发布:淘宝lg f300手机电池 编辑:程序博客网 时间:2024/06/09 22:47

本文主体摘自http://blog.csdn.net/zqt520/article/details/7365522,感谢作者。

得出的结论是一天之中时分秒总共会重合2次,时分会重合20次。
//程序如下:#include<stdio.h>//设置时分秒针的速度//时针720秒走一格,分针60秒走一格,秒针1秒走一格,钟表一圈共60格//因此时针速度为1/720,分针速度为1/60,但在程序中为了便于实现,全部扩大720倍//所以得出如下宏定义#define v_h 1 //时针速度#define v_m 12 //分针速度#define v_s 720 //秒针速度#define s_total (720*60) //一圈的总路程int s_h(int time){return v_h*time;}int s_m(int time){return v_m*time;}int s_s(int time){return v_s*time;}int main(){  int n_hms=0;     int time=0;  int n_hm=0;  int n_hs=0;  int n_ms=0;  /*思路:三针相遇并不一定是在整秒时相遇,也有可能是在相邻两秒之间相遇,例如某次是在秒针从1 秒跳到2秒的过程中相遇。但无论如何,在相遇的那一刻,秒针比分针多走的圈数比这次相遇前要多一圈,例如某时刻秒针比分针多走了100圈,在下次相遇时,秒针就比分针多走了101圈。同理,分针与时针,秒针与时针都满足这点。*/  for(time=1;time<=24*60*60;time++)  {  //相遇的前一秒总会比相遇后少走了1圈if(((s_s(time)-s_m(time))/s_total+1)==((s_s(time+1)-s_m(time+1))/s_total) &&((s_m(time)-s_h(time))/s_total+1)==((s_m(time+1)-s_h(time+1))/(s_total))){n_hms++;printf("第%d次相遇的时间为 %d:%d:%d\n",n_hms,(time+1)/3600,(time+1)%3600/60,(time+1)%3600%60);}else if(((s_s(time)-s_m(time))/s_total+1)==((s_s(time+1)-s_m(time+1))/s_total)){n_ms++;}else if(((s_m(time)-s_h(time))/s_total+1)==((s_m(time+1)-s_h(time+1))/(s_total))){n_hm++;}else if(((s_s(time)-s_h(time))/s_total+1)==((s_s(time+1)-s_h(time+1))/(s_total))){n_hs++;}  }  printf("一天中时分秒共相遇了%d次\n",n_hms);  printf("一天中时分共相遇了%d次\n",n_hm);  printf("一天中分秒共相遇了%d次\n",n_ms);  printf("一天中时秒共相遇了%d次\n",n_hs);}


程序执行结果为:

原创粉丝点击