楼主: newkid

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

[复制链接]
论坛徽章:
93
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
91#
发表于 2012-8-16 10:08 | 只看该作者
〇〇 发表于 2012-8-16 09:29
利用镜像更快
SQL> with t as(select level l,trunc((level-1)/18)r,mod(level-1,18)c from dual connec ...

呵呵,但是和plsql比简直弱爆了
bill@XE> declare
  2  cnt        int:=0;
  3  C  int:=18;        --chessboard width
  4  begin
  5     for c1 in 1..C loop
  6             for r1 in 1..C loop
  7                     for c2 in c1..C loop
  8                             for r2 in case when c2=c1 then r1+2 else 1 end..C loop
  9                                     continue when abs(c1-c2)<=1 and abs(r1-r2)<=1;
10                                     for c3 in c2..C loop
11                                             for r3 in case when c3=c2 then r2+2 else 1 end..C loop
12                                                     continue when (abs(c1-c3)<=1 and abs(r1-r3)<=1) or (abs(c2-c3)<=1 and abs(r2-r3)<=1);
13                                                     cnt:=cnt+1;
14                                             end loop;
15                                     end loop;
16                             end loop;
17                     end loop;
18             end loop;
19     end loop;
20     dbms_output.put_line(cnt);
21  end;
22  /
5239808

PL/SQL procedure successfully completed.

Elapsed: 00:00:01.06

我一直坚信这类问题,plsql是最好的,永远胜过笛卡尔积,因为它的内存消耗实在太少了,就是几个变量而已。

使用道具 举报

回复
论坛徽章:
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
92#
发表于 2012-8-16 10:28 | 只看该作者
udfrog 发表于 2012-8-16 10:08
呵呵,但是和plsql比简直弱爆了
bill@XE> declare
  2  cnt        int:=0;

如果用纯数学更快

使用道具 举报

回复
论坛徽章:
0
93#
发表于 2012-8-16 14:41 | 只看该作者
64*63*62/2/3
=41664

6*8*2 + 7*7*4 + 6*7*4*2 + 6*6*2 + 6*7*4
=96 + 196 + 336 + 72 + 168
=868

[ ( 4*58 + 2*5*56 + 5*6*52 + 2*6*55 )  + ( 2*55 + 2*56 + 5*4*53 + 5*5*50 ) ] * 2
=( ( 232 + 560 + 1560 + 660 ) + ( 110 + 112 + 1060 + 1250 ) ) * 2
=11088

41664 - 868 - 11088
=29708

使用道具 举报

回复
论坛徽章:
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
94#
发表于 2012-8-16 14:53 | 只看该作者
chinagamei 发表于 2012-8-16 14:41
64*63*62/2/3
=41664

第2、3个等式解释一下

使用道具 举报

回复
论坛徽章:
0
95#
发表于 2012-8-16 15:13 | 只看该作者
324*323*322/2/3
=5616324

16*18*2 + 17*17*4 + 16*17*4*2 + 16*16*2 + 16*17*4
=576 + 1156 + 2176 + 512 + 1088
=5508

[( 4*318 + 2*15*316 + 15*16*312 + 2*16*315 ) + ( 2*315 + 2*316 + 15*4*313 + 15*15*310 )] * 2
=( 1272 + 9480 + 74880 + 10080 + 630 + 632 + 18780 + 69750 ) * 2
=371008

5616324 - 5508 - 371008
=5239808

使用道具 举报

回复
论坛徽章:
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
96#
发表于 2012-8-16 16:08 | 只看该作者
318是什么?

使用道具 举报

回复
论坛徽章:
0
97#
发表于 2012-8-17 09:59 | 只看该作者
〇〇 发表于 2012-8-16 16:08
318是什么?

318 = 324 - 6 = 18*18 - 6

使用道具 举报

回复
论坛徽章:
0
98#
发表于 2012-8-17 10:01 | 只看该作者
〇〇 发表于 2012-8-16 14:53
第2、3个等式解释一下

第二个式子是有2-3对王可以相互攻击的情况的数目
第三个式子是有1对王可以相互攻击的情况的数目

使用道具 举报

回复
论坛徽章:
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
99#
发表于 2012-8-22 19:46 | 只看该作者
No: 05       August 22, 2012

Sum of the Squares
If you add the squares of all the numbers between 222,222,222 and 999,999,999 (inclusive) what will be the rightmost digit of the result?

If the problem was asked for the numbers between 2 and 9, the answer would be 4.
[ 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
100#
发表于 2012-8-22 19:52 | 只看该作者
完全平方数的间隔是规律的
4 +5 +9 +7=16+9 =25,就是奇数列
任意一个数,它的下一个完全平方数计算
power(trunc(sqrt(x))+1,2)

使用道具 举报

回复

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

本版积分规则 发表回复

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