ITPub博客

首页 > IT职业 > IT生活 > 平方九宫

平方九宫

原创 IT生活 作者:lastwinner 时间:2005-12-19 19:21:23 0 删除 编辑
在3*3的九宫格内,用1,2,3,4,5,6,7,8,9的九个数字填入九宫格内,使得每行数字组成的十进制数平方根为整数。(一道java题)[@more@]http://www.itpub.net/468055.html

【人工求解】
平方根为整数,所以这个数的末尾一定是1/4/5/6/9
而三位数是一个整数的平方的,只有如下的
代码:

11 121
12 144
13 169
14 196
15 225
16 256
17 289
18 324
19 361
20 400
21 441
22 484
23 529
24 576
25 625
26 676
27 729
28 784
29 841
30 900
31 961
...................


排除带0的,有重复数字的,还剩下这些
代码:

13 169
14 196
16 256
17 289
18 324
19 361
23 529
24 576
25 625
27 729
28 784
29 841
31 961
。。。。


假设其中一个数含有169,那其他数字中不含这三个数的只有324和784,显然不能满足题目要求
故169、196、961均被排除
……
如此分析下去,最后得到
361
529
784
而且仅此一解(按大小顺序排列)

【Oracle SQL】
9i下可用

SQL> with a as (select rm from
(select rownum*rownum rm from dual connect by rownum<32)
where substr(rm,1,1)<>substr(rm,2,1) and substr(rm,2,1)<>substr(rm,3,1)and substr(rm,3,1)<>substr(rm,1,1)),
b as (select a.rm||b.rm||c.rm t from a a,a b, a c where a.rmselect to_char(t,'999,999,999') result from
(select t, instr(b.t,c.ch) i from b, (select rownum ch from dual connect by rownum<10) c
where instr(b.t,c.ch)>0)
group by t having count(*)=9;

RESULT
------------
361,529,784

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29867/viewspace-811934/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-12

  • 博文量
    223
  • 访问量
    2882762