中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 出题:一昼夜时钟三针重合几次?
« [1] [2] [3] »
作者:
标题: 出题:一昼夜时钟三针重合几次? 上一主题 | 下一主题
wxcute
中级用户





积分 458
发帖 211
注册 2006-7-26
状态 离线
『第 16 楼』:  

根据大伙的理解,理想钟应该是重合23次。
0-24 包含 25 个整点,24 个小时;
11-13 两个整点间只有 12 点重合,同理 23-24 之间只有24;
0-24 相当于一整天多一秒,而刚好这一秒就是重合的,所以是 22+1=23 次。



┌───────┐
├→学习→实践→┤
└───────┘
2009-1-13 12:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 17 楼』:  

时间象流水一样是连续的,而不是跳跃式的,所以理想钟应该象 8 楼说的



2009-1-13 18:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 18 楼』:  

(网上找的,没学过证明看不懂)

只有两次

假设时针的角速度是ω(ω=π/6每小时),则分针的角速度为12ω,秒针的角速度为72ω。分针与时针再次重合的时间为t,则有12ωt- ωt=2π,t=12/11小时,换算成时分秒为1小时5分27.3秒,显然秒针不与时针分针重合,同样可以算出其它10次分针与时针重合时秒针都不能与它们重合。只有在正12点和0点时才会重。

证明:将时针视为静止,考察分针,秒针对它的相对速度:

12个小时作为时间单位“1”,“圈/12小时”作为速度单位,

则分针速度为11,秒针速度为719。

由于11与719互质,记12小时/(11*719)为时间单位Δ,

则分针与时针重合当且仅当 t=719kΔ k∈Z

秒针与时针重合当且仅当 t=11jΔ j∈Z

而719与11的最小公倍数为11*719,所以若t=0时三针重合,则下一次三针重合

必然在t=11*719*Δ时,即t=12点。

   此帖被 +2 点积分    点击查看详情   
评分人:【 NeverAgain 分数: +2  时间:2009-1-19 00:58


2009-1-14 00:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 19 楼』:  看你怎样理解钟针的转动,答案就不唯一了。

说了,如果按角度算是得不到我的结果的。

这个题没有说针的转动方式。有一直都走的钟,大多数设计的
针还是一跳一跳的。。。最小摆幅为1秒。。。
这种针不是匀速圆周运动的……上面的证明就不适用了。



S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2009-1-14 10:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 20 楼』:  

12小时重合
@echo off
for /l %%i in (0 1 11) do (
   setlocal
   set/a n=%%i*60
   call:lp %%i
   endlocal
)
pause&goto :eof
:lp
    set/a d=%d%%n:~,1%%%11,m=%d%%n:~,1%/11
    if "%i%"=="0" set i=
    set i=%i%%m%
    set n=%n:~1%
    if defined n goto lp
    set/a d=%1*60-(11*i)
:lp1
    set/a m=d*10/11,w+=1
    if "%j%"=="0" set j=
    if %w% lss 5 set j=%j%%m%&set/a d=d*10%%11&goto lp1
    set/a j*=6,h+=%1+i/60,i%%=60
    set h=0%h%&set i=0%i%&set j=0%j%
    echo %h:~-2%:%i:~-2%:%j:~-5,2%.%j:~-3,2%
    goto :eof
[ Last edited by terse on 2009-1-15 at 11:17 ]

   此帖被 +2 点积分    点击查看详情   
评分人:【 exzzz 分数: +2  时间:2009-1-22 00:23




简单!简单!再简单!
2009-1-14 16:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by terse at 2009-1-14 16:41:
12小时重合
[code]
@echo off
for /l %%i in (0 1 11) do (
   setlocal
   set/a n=%%i*60
   call:lp %%i
   endlocal
)
pause&goto :eof
:lp
    set/a d=%d%%n:~,1%%%11,m=%d%%n:~,1%/11
...

非常版主这个看不懂啊,简单介绍下算法吧。

2009-1-14 23:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 22 楼』:  



  Quote:
Originally posted by linee at 2009-1-14 23:41:

非常版主这个看不懂啊,简单介绍下算法吧。

我的思路是这样 探讨下不知正确否
假设表面为60刻度  一小时是5个刻度 x个刻度就是 0点后的x/5刻度 同样y分钟就是y/60小时  到下一个重合点的时候 两刻度相对0点后刻度一样  即x/5小时-y/60小时是个整数 因为分走多一圈 所以一直递增 1  因为刻度一样所以我想 X/5-Y/60的结果应该是 0-11递增 这里的x和y刻度相等也就是X/5-X/60
刚用批写了个 由此题派生出的另一题:
就是时针和分针在什么刻度可以对调且是合理的比如:
07:43:13.00
07:48:15.10
07:53:17.20
07:58:19.29
08:03:21.39
08:08:23.49
08:13:25.59
08:18:27.69
08:23:29.79
08:28:31.88
08:33:33.98
08:38:36.07



简单!简单!再简单!
2009-1-15 02:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 23 楼』:  



  Quote:
Originally posted by terse at 2009-1-15 02:40:

我的思路是这样 探讨下不知正确否
假设表面为60刻度  一小时是5个刻度 x个刻度就是 0点后的x/5刻度 同样y分钟就是y/60小时  到下一个重合点的时候 ...

应该是正确的,与我计算的非常相似(我是按时针分针每过12/11时刻重合一次来算的),如下图:

怎么没图呢?

算了,就文本说明吧,你这个计算下来跟我计算的(前面提供过)非常相似,只有一个时刻异常,就是09:49这个时刻,你这个计算的是09:49:54.540,我前面提供是的09:49:05.45,一个54一个05差的不是一点半点,有点奇怪。

先分析下你的代码看看。

[ Last edited by linee on 2009-1-15 at 09:54 ]

2009-1-15 09:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 24 楼』:  



  Quote:
Originally posted by linee at 2009-1-15 09:28:

....一个54一个05

取位错了 已修正



简单!简单!再简单!
2009-1-15 11:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 25 楼』:  



  Quote:
Originally posted by terse at 2009-1-15 02:40:

我的思路是这样 探讨下不知正确否
假设表面为60刻度  一小时是5个刻度 x个刻度就是 0点后的x/5刻度 同样y分钟就是y/60小时  到下一个重合点的时候 ...

分析下来,你这个的结果应该就相当于每过12/11时刻重合一次,尝试修改你的代码如下,希望不要介意。
@echo off
for /l %%i in (0 1 11) do (
   setlocal
   set/a n=%%i*60
   call:lp %%i
   endlocal
)
pause&goto :eof
:lp
    set/a d=%n%%%11,i=%n%/11
    set/a j=d*10000/11
    set/a j*=6,h=%1+i/60,i%%=60
    set h=0%h%&set i=0%i%&set j=0%j%
    echo %h:~-2%:%i:~-2%:%j:~-5,2%.%j:~-3,2%
    goto :eof


2009-1-15 15:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 26 楼』:  

我实际解了上面程式  你简化很多  很好
再讨论下时针和分针在什么刻度可以对调且是合理的情况
其中重合情况 作了提示
@echo off
for /l %%i in (0 1 11) do (
   for /l %%j in (0 1 11) do (
     setlocal enabledelayedexpansion
     set/a n=^(%%j*12+%%i^)*60
     set/a d=n%%143,i=n/143,j=d*10000/143,j*=6,h=%%i+i/60,i%%=60
     set h=0!h!&set i=00!i!&set j=00!j!
     if %%i equ %%j (echo 表针重合 echo !h:~-2!:!i:~-2!:!j:~-5,2!.!j:~-3,2!
   ) else echo !h:~-2!:!i:~-2!:!j:~-5,2!.!j:~-3,2!
     endlocal
))
pause&goto :eof
重合的代码 放在for里效率高点  前面的call出是因为考虑小数  现在这样直接可以了
@echo off
for /l %%i in (0 1 11) do (
    setlocal enabledelayedexpansion
    set/a n=%%i*60,d=n%%11,i=n/11,j=d*10000/11,j*=6,h=%%i+i/60,i%%=60
    set h=0!h!&set i=00!i!&set j=00!j!
    echo !h:~-2!:!i:~-2!:!j:~-5,2!.!j:~-3,2!
    endlocal
)
pause
[ Last edited by terse on 2009-1-18 at 14:51 ]



简单!简单!再简单!
2009-1-15 15:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 27 楼』:  

时针分针对调是什么意思?

2009-1-15 17:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 28 楼』:  



  Quote:
Originally posted by linee at 2009-1-15 17:26:
时针分针对调是什么意思?

比如 重合时时针分针对调位置肯定是合理的 如3点的时候 对调位置显然是不合理的 因为时针12点的时候 分针绝不会在3点吧



简单!简单!再简单!
2009-1-15 17:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 29 楼』:  



  Quote:
Originally posted by terse at 2009-1-15 17:33:

比如 重合时时针分针对调位置肯定是合理的 如3点的时候 对调位置显然是不合理的 因为时针12点的时候 分针绝不会在3点吧

有点难理解,不想研究了。

2009-1-16 23:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
linee
初级用户





积分 94
发帖 49
注册 2008-12-14
状态 离线
『第 30 楼』:  

我来发一个看如何,
惭愧啊,书到用时方恨少,总觉得表达不清楚,我很努力了,将就看吧。欢迎指正。
:: 时钟三针重合问题:
::
:: 思路:先找时针分针重合的位置s1,再找此时秒针的位置s2,
:: 如果s2=s1则三针重合。从0点比对到24点结束。
::
:: 时针分针第一次重合发生在1点到2点之间,设此时刻时间为t,
:: 时针角速度为w,此时时针行进wt,分针角速度为时针的12倍,
:: 有分针行进12wt,此时分针比时针多转一圈(12w),于是有:
::         12wt-wt=12w,t=12/11
:: 此时时针位置wt=w*12/11=(1/11)*12w,相当于1/11圈,可取
::         s1=1/11
:: 又秒针角速度是时针的720倍,此时秒针行进720wt,秒针位置
::         720wt=720w*12/11=(65+5/11)*12w
:: 相当于65又5/11圈,可取
::         s2=5/11
:: 比对s1不等于s2,知道此时三针不重合,因cmd不支持浮点,
:: s1,s2的比对程序改除11为对11求余后再比对。
::
@echo off&setlocal enabledelayedexpansion
for /l %%i in (0,1,22) do (
set/a s1=%%i %%11,s2=%%i*5%%11,i=%%i+1
set/a h=%%i*12/11,m=%%i*60/11%%60,s=%%i*300/11%%60,sh=%%i*300%%11,sh*=100/11
for %%j in (h m s sh i) do if !%%j! lss 10 set %%j=0!%%j!
set /p=时分针重合_!i! !h!:!m!:!s!.!sh! <nul
if !s1! equ !s2! (set/a j+=1&echo 三针重合_!j!) else echo.
)
pause
[ Last edited by linee on 2009-1-16 at 23:14 ]

2009-1-16 23:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: