楼主: newkid

[精华] puzzleup2012谜题,请用SQL或PLSQL解答

[复制链接]
论坛徽章:
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
61#
发表于 2012-8-8 00:36 | 只看该作者
newkid 发表于 2012-8-7 05:31
你这还是很勉强,锯齿状也可以连续的,比如你中线不就是这样弄出来的嘛?
难在证明无法“一笔画”。

问题是到边后,还能连续么?所以锯齿状无法一直连续

使用道具 举报

回复
论坛徽章:
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
62#
 楼主| 发表于 2012-8-8 02:09 | 只看该作者
我现在严重怀疑我们讲的是不是一回事?

我所谓的“阶梯状”:

1****
23***
*45**
**67*
***89

可以看到13579在中线上,2468偏向一方。导致剩下的空位无法一笔画。但是这个必须证明,并不是显而易见的。

左右均分:
1****
234**
**5**
**678
****9
可以看到2468是上下错开的。这样的可以一笔画。

你的这句话什么意思:“左右不均匀,因为对角线是锯齿状的,所以一边就无法按规则形成连续的数”

使用道具 举报

回复
论坛徽章:
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
63#
发表于 2012-8-8 20:38 | 只看该作者
No: 03       August 08, 2012

Five Numbers
Insert 4 multiplication signs inside the number sequence "234567898765432" and obtain a multiplication of 5 numbers. What can be the maximum value of this operation?

Example:
2x3x4567x8x98765432=21650962941312
But, the result is not maximum.
[ You can answer this problem starting from Thursday at 11:00 (GMT) ]

使用道具 举报

回复
论坛徽章:
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
64#
发表于 2012-8-8 21:01 | 只看该作者
〇〇 发表于 2012-8-8 20:38

感觉分割成差不多长的大,但是也不一定
SQL> select 2*2*222,2*22*22 from dual;

   2*2*222    2*22*22
---------- ----------
       888        968

Elapsed: 00:00:00.01
SQL> select 2*2*422,2*24*22 from dual;

   2*2*422    2*24*22
---------- ----------
      1688       1056

使用道具 举报

回复
论坛徽章:
1
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48
65#
发表于 2012-8-8 22:03 | 只看该作者
本帖最后由 ryax 于 2012-8-9 17:24 编辑

编个VB,不好意思,菜鸟。看看哪里不通?
Sub puzzle()
Dim a(5) As Integer
Dim n As Integer
Dim k As Double
Dim m As Integer
k = 0
m = 0
n = 234567898765432#
For i = 1 To 11
For j = 1 To 12 - i
For e = 1 To 13 - i - j
For r = 1 To 14 - i - j - e
     
        a(0) = n - Int(n / (10 ^ i)) * (10 ^ i)
        n = Int(n / (10 ^ i))
        a(1) = n - Int(n / (10 ^ j)) * (10 ^ j)
        n = Int(n / (10 ^ j))
        a(2) = n - Int(n / (10 ^ e)) * (10 ^ e)
        n = Int(n / (10 ^ e))
     a(3) = n - Int(n / (10 ^ e)) * (10 ^ e)
     a(4) = Int(n / (10 ^ r))
     
     m = a(1) * a(2) * a(3) * a(4) * a(0)
     If k < m Then
     k = m
     n = 2345678987654#
     
Next r
Next e
Next j
Next i
Cells(1, 1) = k
Cells(1, 3) = m
      
   
End Sub

使用道具 举报

回复
论坛徽章:
1
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48
66#
发表于 2012-8-8 22:03 | 只看该作者
本帖最后由 ryax 于 2012-8-9 11:19 编辑

当然死算也能算

使用道具 举报

回复
论坛徽章:
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
67#
 楼主| 发表于 2012-8-8 22:17 | 只看该作者
ryax 发表于 2012-8-8 22:03
当然死算也能算出来。

“死算”什么意思?
改成SQL或PLSQL, 我给你发章。这道题很简单的。

使用道具 举报

回复
论坛徽章:
1
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48
68#
发表于 2012-8-9 12:34 | 只看该作者
本帖最后由 ryax 于 2012-8-9 16:45 编辑

Sub puzzle()
Dim a(5) As Integer
Dim b(15) As Integer
Dim k As Double
Dim m As Integer
k = 0
m = 0
   a(0) = a(1) = a(2) = a(3) = a(4) = 0
     b(0) = 2
     b(1) = 3
     b(2) = 4
     b(3) = 5
     b(4) = 6
     b(5) = 7
     b(6) = 8
     b(7) = 9
     b(8) = 8
     b(9) = 7
     b(10) = 6
     b(11) = 5
     b(12) = 4
     b(13) = 3
     b(14) = 2
     
     For i = 1 To 11
     For j = 1 To 12 - i
     For e = 1 To 13 - i - j
     For k = 1 To 14 - i - j - e
   
        For i1 = 1 To i
        a(0) = a(0) * 10 + b(i1 - 1)
        Next i1
        For j1 = 1 To j
        a(1) = a(1) * 10 + b(i + j1 - 1)
        Next j1
        For e1 = 1 To e
        a(2) = a(2) * 10 + b(i1 + j + e1 - 1)
        Next e1
        For k1 = 1 To k
        a(3) = a(3) * 10 + b(i + j + e + k 1- 1)
        Next k1
        t = 15 - i - j - e - k
        For t1 = 1 To t
        a(4) = a(4) * 10 + b(t 1- 1)
        Next t1
      
     m = a(0) * a(1) * a(2) * a(3) * a(4)
     If k < m Then
     k = m
      a(0) = a(1) = a(2) = a(3) = a(4) = 0
Next k
Next e
Next j
Next i

Cells(1, 1) = k
Cells(1, 3) = m
      
   

End Sub

使用道具 举报

回复
论坛徽章:
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
69#
发表于 2012-8-9 16:41 | 只看该作者
本帖最后由 〇〇 于 2012-8-9 16:56 编辑

原以为会很多种情况,其实很少
SQL> with n as (select 234567898765432 n from dual),
  2  t as(select level l from n connect by level<=length(n)-1)
  3  select * from(select substr(n,1,a.l)
  4  *substr(n,1+a.l,b.l-a.l)
  5  *substr(n,1+b.l,c.l-b.l)
  6  *substr(n,1+c.l,d.l-c.l)
  7  *substr(n,1+d.l)prod,
  8  substr(n,1,a.l)||
  9  '*'||substr(n,1+a.l,b.l-a.l)||
10  '*'||substr(n,1+b.l,c.l-b.l)||
11  '*'||substr(n,1+c.l,d.l-c.l)||
12  '*'||substr(n,1+d.l)expr
13  from t a,t b,t c,t d,n where a.l<b.l and b.l<c.l and c.l<d.l
14  order by 1 desc)
15  where rownum=1;
                       PROD
---------------------------
EXPR
------------------------------------------------------------------------------------------------------------------------------------
            103623394387968
23456*7*8*9*8765432

使用道具 举报

回复
论坛徽章:
1
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48
70#
发表于 2012-8-9 16:58 | 只看该作者
本帖最后由 ryax 于 2012-8-9 17:17 编辑

楼上是切4下,5个数的积。

使用道具 举报

回复

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

本版积分规则 发表回复

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