日期:2014-05-17  浏览次数:21303 次

一天之内有多少次时针分针秒针回重合?
一天之内有多少次时针分针秒针回重合?分别是什么时候,说出计算方法。
学C#前后不到一个月
今天去面试第一个题目就是这个
不评最佳答案,看重处理方式
纯为交流


------解决方案--------------------
C# code

using System;
using System.Collections.Generic;
using System.Text;

namespace Reclosing
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int h = 0; h < 120; h += 5)
            {
                for (int m = 0; m < 60; m++)
                {
                    for (int s = 0; s < 60; s++)
                    {
                        if (((h >= 60) ? h - 60 : h) == m && m == s)
                            Console.WriteLine(h / 5 + ":" + m + ":" + s);
                    }
                }
            }
            Console.Read();

        }
    }
}

------解决方案--------------------
http://lakeinmoon.bokee.com/6159214.html
------解决方案--------------------
http://www.simpleness.com.cn/view/23/1.aspx
------解决方案--------------------
List<double> Timeslap(double wf, double ws) 

var n = (int)(24 * 3600 * wf / 360); 
var times = new List<double>(n); 
for (int k = 0; k < n - 1; k++) 

var t = 360 * (k - (int)(k * ws / wf)) / (wf - ws); 
if (times.Count == 0 || times[times.Count - 1] != t) times.Add(t); 

return times; 
}
时针和分针相遇22次
------解决方案--------------------
一天指的是 24小时吧?
应该是23次吧
------解决方案--------------------
这是一个推理题目

设计小时为A 分钟为B 他们都在围着圈跑 a 跑一圈(12小时) B 要跑12圈 

则一个起跑点开跑,A跑一圈 b将追上a 11次又回到原点 A 再跑一圈为上一次的重复 
算上起点重合一共12次
由于A B 是匀速的,则B 追上A 的位置必然均分在这个圈上 就是将这个圈12等分

分钟和秒 B 为分钟 C 为秒 我们发现 同样 B 跑一圈(1小时) C 同样要跑60圈
则一个起跑点开跑,B跑一圈 c将追上B 59次又回到原点 A 再跑一圈为上一次的重复 
算上起点重合一共60次
由于B C 是匀速的,则C 追上A 的位置必然均分在这个圈上 就是将这个圈60等分

12等分与60等分一个圈 起点相同必须重合12下

则一天有24次重合

由于 00:00:00做为一天的开始 那么24:00:00就不能做为一天的结束,只能做为下一天的开始
那么一共23次
------解决方案--------------------
这要看什么叫做“重合”?

我写的程序:
C# code
using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int 精度 = 120;
            int i = 0;
            (from sec in Enumerable.Range(0, 24 * 60 * 60 - 1)
             let harc = (sec / 12 / 3600.0 - (int)(sec / 12 / 3600.0)) * 精度
             let marc = (sec / 3600.0 - (int)(sec / 3600.0)) * 精度
             where Math.Abs(harc - marc) <= 1
             let sarc = (sec / 60.0 - (int)(sec / 60.0)) * 精度
             where Math.Abs(marc - sarc) <= 1
             select new TimeSpan(0, 0, sec))
             .ToList()
             .ForEach(t => { Console.WriteLine("{0}\t{1}", ++i, t); });
            Console.ReadKey();
        }
    }
}

------解决方案--------------------
算起起点24次重合,终点不算,是第二天的起点。
思路就是 1天24小时,从起点开始,每过1小时(不到2小时),分钟与时钟重叠一次(瞬间重叠也算)。
这样 (0+1)×24 = 24 次。
如果要求只计算在某个刻点上的重叠,那么justfortemp的第二个答案计算方法。不过得考虑起点,这样就是2次重叠。即0点和12点。
------解决方案--------------------
只有两次就是12点和0点的时候
------解决方案--------------------
你们只讨论怎么分析,正确答案到底是多少?22次?这个答案对不?
想得出合理的分析方法我觉得首先得明确的就是正确答案!