很早很早之前就看到过这个问题:在一天24小时之中,时针、分针和秒针会重合几次?
    在网上也会搜出不少答案,有说2次的,有说22次、23次的、24次的,还有的说脑筋急转弯0次的(⊙﹏⊙汗)。
我看了一下,分歧主要在于秒针转动一格,分针和时针到底会不会转动呢?如果说,时针和分针在每秒钟都会转,只不过幅度很小(时针1/720格,分针1/60格)而已的话,那么答案应该是2次,它们只会在0点和12点的时候重合。
    如果认为秒针、分针、时针是一格一格地转动的话,也就是说秒针每转动60格分针转动1格,秒针每转动720格时针转动1格。我算了一下应该是24次重合的机会的:
public static void test1(){

//时针、分针、秒针的速度
double Vh=1.0/720,Vm=1.0/60,Vs=1.0;
//一天总秒数
int totalSec=24*3600;

int count=0;

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

            int Sh=(int)(Vh*i);
   int Sm=(int)(Vm*i);
   int Ss=(int)(Vs*i);// double Sh= Vh*i;
// double Sm=Vm*i;
// double Ss=Vs*i; if( Sh%60==Sm%60 && Sh%60==Ss%60 )
{
int h=i/3600;
int m=(i-3600*h)/60;
int s=i-3600*h-60*m;
System.out.println(h+":"+m+":"+s);
count++;
}
}
        System.out.println("时针、分针、秒针一天共有"+count+"次重合!");
       
}0:0:0
1:5:5
2:10:10
3:16:16
4:21:21
5:27:27
6:32:32
7:38:38
8:43:43
9:49:49
10:54:54
11:59:59
12:0:0
13:5:5
14:10:10
15:16:16
16:21:21
17:27:27
18:32:32
19:38:38
20:43:43
21:49:49
22:54:54
23:59:59
时针、分针、秒针一天共有24次重合!
    如果用注释的代码,也就是说认为分针、时针每时每刻都在转动的,那么只会打印出O点和12点。不过我认为秒针、分针、时针是一格一格地转动的。因为我想,一般钟表是用齿轮带动的,那么齿轮一个齿一个齿地带动钟上的针的转动,那么它们应该是一格一格地转动的吧。当然,这是我自己想象的,不知道对不对。
    网上有一个答案:
    如果把时钟的一圈算是12格的话,那么时针的相对速度就是1,分针的相对速度就是12.
速度差12-1=11 就是说12/11小时能重合一次大约是1小时5分3秒一次.
用一天的24个小时除已12/11小时这个时间就是22次.
如果你把0点也算上的话就是23次了!
    不过我想这个只算了分针和时针的重合,没有考虑秒针,当时针“追上”分针的时候,不能确定这个点,秒针就是和它们重合的吧?
    不知道我说的对不对,大家有没有看法?或者谁知道标准答案,据说这是某个名企的面试题???

解决方案 »

  1.   

    咕~~(╯﹏╰)b  LZ说的是位置重合  没考虑长短啊!
      

  2.   

    其实楼主这个问题是不是要更精确一点。
    在hdu  acm1006里面http://acm.hdu.edu.cn/showproblem.php?pid=1006是计算3个时针之间的度数,但是秒针不是离散的一秒秒的走,而是不停顿的走。当3个指针完全重合的时候也就是为0度的时候。楼主可以试试是不是24次。
      

  3.   

    A hand is happy if it is at least D degrees from any of the rest.
    题目是不是说要求任意两针之间至少相隔D度?那它给的D=0的时候,任意两针之间至少相隔0度的次数怎么才100次???
      

  4.   

    A hand is happy if it is at least D degrees from any of the rest.
    题目是不是说要求任意两针之间至少相隔D度?那它给的D=0的时候,任意两针之间至少相隔0度的次数怎么才100次???
      

  5.   

    不是的,这里的速度是以1格一个算的,每个小时之间5格,时针是1.0/720格每秒,我这里是假设每满12分钟时针才会转动一格。(1/720)*12*60=1,假设现在过了22分钟,(int)(1/720)*22*60=1,这时候我认为它还不动,只有满24分钟才会转到第二格。