平方九宫

在3*3的九宫格内,用1,2,3,4,5,6,7,8,9的九个数字填入九宫格内,使得每行数字组成的十进制数平方根为整数。(一道java题)[@more@] http://www.itpub.net/468055.html

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

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


假设其中一个数含有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博客 ” ,链接:http://blog.itpub.net/29867/viewspace-811934/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29867/viewspace-811934/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值