楼主: tree_new_bee

[精华] 趣题, 第8道来了。

[复制链接]
论坛徽章:
10
CTO参与奖
日期:2009-02-20 09:44:20ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30迷宫蛋
日期:2012-05-07 10:55:58茶鸡蛋
日期:2012-04-19 16:08:262012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-01-04 10:24:02数据库板块每日发贴之星
日期:2010-12-19 01:01:02数据库板块每日发贴之星
日期:2010-12-13 01:01:012009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-02-08 06:00:12
11#
 楼主| 发表于 2012-5-6 00:35 | 只看该作者
lugionline 发表于 2012-5-5 22:30
大概是这样的吧(要是没算错的话 ):

H = T/12

非常棒!

使用道具 举报

回复
论坛徽章:
10
CTO参与奖
日期:2009-02-20 09:44:20ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30迷宫蛋
日期:2012-05-07 10:55:58茶鸡蛋
日期:2012-04-19 16:08:262012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-01-04 10:24:02数据库板块每日发贴之星
日期:2010-12-19 01:01:02数据库板块每日发贴之星
日期:2010-12-13 01:01:012009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-02-08 06:00:12
12#
 楼主| 发表于 2012-5-6 00:52 | 只看该作者
其实这个题似乎不容易用SQL枚举来做, 因为时间不是离散值。 要用SQL,也只是把上面的人肉计算方法结果select出来而已。

143的结果,实际上说明, 对于每个小时, 分针在每个5分钟的刻度区间内, 都一定能找到一个满足条件的时间点。

这样看来这个题实际上是指针重合题的一个扩展: 对于指针重合的问题是12个小时内重复11次, 每次出现的间隔是12/11小时。
这个问题的结果是12小时内重复143次,每次出现的间隔是12*60/143= 5.035... ,大概是5分零2秒多。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
13#
发表于 2012-5-6 02:40 | 只看该作者
逻辑题,用sql去解不现实,精度误差的问题(当然,乘以一个合适的数或许能消除精度问题,比如360)
题意很好理解,在时刻T上,以零点为零度,23:59:59过后一秒为360度,那么此时刻上时针的角度为H,分针的角度为M,如果将此时的时针和分针掉个个儿,那现在是否还是一个合理的时间?
这个题要注意,时刻T是可以精确到毫秒的

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
14#
发表于 2012-5-6 06:54 | 只看该作者
我列的方程如下:
设X表示小时,Y表示分,都是[0,12)的数,

X-[X]=Y/12
Y-[Y]=X/12

由方程1得 Y=12(X-[X])
代入方程2:

X=12(Y-[Y])=12(12(X-[X])-[12(X-[X])])
X=144X-12[12X]
和8楼殊途同归了。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
15#
发表于 2012-5-6 07:01 | 只看该作者
lastwinner 发表于 2012-5-6 02:40
逻辑题,用sql去解不现实,精度误差的问题(当然,乘以一个合适的数或许能消除精度问题,比如360)
题意很 ...

不能算逻辑题,代数题吧。如果时针分针都是以刻度来走而不是连续的,则用SQL可以解决,就是一个360*360的笛卡尔积而已。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
16#
发表于 2012-5-6 07:02 | 只看该作者
lugionline 发表于 2012-5-5 22:30
大概是这样的吧(要是没算错的话 ):

H = T/12

小伙子一表人才,怎么不学ORACLE偏去学什么SQLSERVER呢?

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
17#
发表于 2012-5-6 07:43 | 只看该作者
newkid 发表于 2012-5-6 06:54
我列的方程如下:
设X表示小时,Y表示分,都是[0,12)的数,

小时-小时取整=分钟数,Y即分针位置

使用道具 举报

回复
论坛徽章:
26
2010年世界杯参赛球队:阿根廷
日期:2010-07-15 16:49:17马上加薪
日期:2014-10-30 09:48:58马上有车
日期:2014-11-04 14:03:06马上有钱
日期:2015-01-13 10:14:512015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31喜羊羊
日期:2015-03-16 10:05:36慢羊羊
日期:2015-06-02 11:57:03慢羊羊
日期:2015-06-17 16:43:46巨蟹座
日期:2015-10-19 10:12:48
18#
发表于 2012-5-6 11:13 | 只看该作者
本帖最后由 szusunny 于 2012-5-6 11:16 编辑

-- tmp1为60格钟盘上所有有效的时、分针的位置
with tmp1 as(
select
to_char(trunc(sysdate)+(level-1)/60/24,'hh24:mi') as t_val,
mod(trunc((level-1)/12),60) as h_pos,
mod(level-1,60) as m_pos
from dual
connect by level <= 60*12)
-- 时、分针对换位置后依然是有效时间的
select
a.h_pos,a.m_pos,
a.t_val as old_time,
b.t_val as new_time
from tmp1 a,tmp1 b
where a.h_pos = b.m_pos
      and a.m_pos = b.h_pos

-- Result
    H_POS        M_POS        OLD_TIME        NEW_TIME
1        0        0        00:00        00:00
2        0        5        00:05        01:00
3        0        10        00:10        02:00
4        1        15        00:15        03:01
5        1        20        00:20        04:01
6        2        25        00:25        05:02
7        2        30        00:30        06:02
8        2        35        00:35        07:02
9        3        40        00:40        08:03
10        3        45        00:45        09:03
11        4        50        00:50        10:04
12        4        55        00:55        11:04
13        5        0        01:00        00:05
14        5        5        01:05        01:05
15        5        10        01:10        02:05
16        6        15        01:15        03:06
17        6        20        01:20        04:06
18        7        25        01:25        05:07
19        7        30        01:30        06:07
20        7        35        01:35        07:07
21        8        40        01:40        08:08
22        8        45        01:45        09:08
23        9        50        01:50        10:09
24        9        55        01:55        11:09
25        10        0        02:00        00:10
26        10        5        02:05        01:10
27        10        10        02:10        02:10
28        11        15        02:15        03:11
29        11        20        02:20        04:11
30        12        26        02:26        05:12
31        12        31        02:31        06:12
32        13        36        02:36        07:13
33        13        41        02:41        08:13
34        13        46        02:46        09:13
35        14        51        02:51        10:14
36        14        56        02:56        11:14
37        15        1        03:01        00:15
38        15        6        03:06        01:15
39        15        11        03:11        02:15
40        16        16        03:16        03:16
41        16        21        03:21        04:16
42        17        26        03:26        05:17
43        17        31        03:31        06:17
44        18        36        03:36        07:18
45        18        41        03:41        08:18
46        18        46        03:46        09:18
47        19        51        03:51        10:19
48        19        56        03:56        11:19
49        20        1        04:01        00:20
50        20        6        04:06        01:20
51        20        11        04:11        02:20
52        21        16        04:16        03:21
53        21        21        04:21        04:21
54        22        26        04:26        05:22
55        22        31        04:31        06:22
56        23        36        04:36        07:23
57        23        41        04:41        08:23
58        23        46        04:46        09:23
59        24        52        04:52        10:24
60        24        57        04:57        11:24
61        25        2        05:02        00:25
62        25        7        05:07        01:25
63        26        12        05:12        02:26
64        26        17        05:17        03:26
65        26        22        05:22        04:26
66        27        27        05:27        05:27
67        27        32        05:32        06:27
68        28        37        05:37        07:28
69        28        42        05:42        08:28
70        28        47        05:47        09:28
71        29        52        05:52        10:29
72        29        57        05:57        11:29
73        30        2        06:02        00:30
74        30        7        06:07        01:30
75        31        12        06:12        02:31
76        31        17        06:17        03:31
77        31        22        06:22        04:31
78        32        27        06:27        05:32
79        32        32        06:32        06:32
80        33        37        06:37        07:33
81        33        42        06:42        08:33
82        33        47        06:47        09:33
83        34        52        06:52        10:34
84        34        57        06:57        11:34
85        35        2        07:02        00:35
86        35        7        07:07        01:35
87        36        13        07:13        02:36
88        36        18        07:18        03:36
89        36        23        07:23        04:36
90        37        28        07:28        05:37
91        37        33        07:33        06:37
92        38        38        07:38        07:38
93        38        43        07:43        08:38
94        39        48        07:48        09:39
95        39        53        07:53        10:39
96        39        58        07:58        11:39
97        40        3        08:03        00:40
98        40        8        08:08        01:40
99        41        13        08:13        02:41
100        41        18        08:18        03:41
101        41        23        08:23        04:41
102        42        28        08:28        05:42
103        42        33        08:33        06:42
104        43        38        08:38        07:43
105        43        43        08:43        08:43
106        44        48        08:48        09:44
107        44        53        08:53        10:44
108        44        58        08:58        11:44
109        45        3        09:03        00:45
110        45        8        09:08        01:45
111        46        13        09:13        02:46
112        46        18        09:18        03:46
113        46        23        09:23        04:46
114        47        28        09:28        05:47
115        47        33        09:33        06:47
116        48        39        09:39        07:48
117        48        44        09:44        08:48
118        49        49        09:49        09:49
119        49        54        09:54        10:49
120        49        59        09:59        11:49
121        50        4        10:04        00:50
122        50        9        10:09        01:50
123        51        14        10:14        02:51
124        51        19        10:19        03:51
125        52        24        10:24        04:52
126        52        29        10:29        05:52
127        52        34        10:34        06:52
128        53        39        10:39        07:53
129        53        44        10:44        08:53
130        54        49        10:49        09:54
131        54        54        10:54        10:54
132        54        59        10:59        11:54
133        55        4        11:04        00:55
134        55        9        11:09        01:55
135        56        14        11:14        02:56
136        56        19        11:19        03:56
137        57        24        11:24        04:57
138        57        29        11:29        05:57
139        57        34        11:34        06:57
140        58        39        11:39        07:58
141        58        44        11:44        08:58
142        59        49        11:49        09:59
143        59        54        11:54        10:59
144        59        59        11:59        11:59

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
19#
发表于 2012-5-6 11:22 | 只看该作者
newkid 发表于 2012-5-6 07:01
不能算逻辑题,代数题吧。如果时针分针都是以刻度来走而不是连续的,则用SQL可以解决,就是一个360*360的 ...

精确到秒也可以解决的,12小时是86400/2=43200秒
43200*43200的笛卡尔积

使用道具 举报

回复
论坛徽章:
10
CTO参与奖
日期:2009-02-20 09:44:20ITPUB年度最佳技术原创精华奖
日期:2013-03-22 13:18:30迷宫蛋
日期:2012-05-07 10:55:58茶鸡蛋
日期:2012-04-19 16:08:262012新春纪念徽章
日期:2012-01-04 11:54:462011新春纪念徽章
日期:2011-01-04 10:24:02数据库板块每日发贴之星
日期:2010-12-19 01:01:02数据库板块每日发贴之星
日期:2010-12-13 01:01:012009日食纪念
日期:2009-07-22 09:30:00优秀写手
日期:2014-02-08 06:00:12
20#
 楼主| 发表于 2012-5-6 14:23 | 只看该作者
lastwinner 发表于 2012-5-6 11:22
精确到秒也可以解决的,12小时是86400/2=43200秒
43200*43200的笛卡尔积

精确到秒是不够的, 这些具体的时间点不是整秒的位置。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表