趣味题

通过SQL查询优化,解决寻找100元钞票换成2元、5元、10元、20元、50元的兑换方案问题,并揭示四位数乘以4等于其逆序数的数学谜题。
100块钱,换零钱,换成2,5,10,20,50的,有多少种换法:

这个写法还能优化,可以减少一个表的笛卡尔集,目前先不做了
SQL> WITH t2 AS
  2    (SELECT rownum-1 a2 FROM dual CONNECT BY rownum<100/2+1 ), t5 AS
  3    (SELECT rownum-1 a5 FROM dual CONNECT BY rownum<100/5+1 ), t10 AS
  4    (SELECT rownum-1 a10 FROM dual CONNECT BY rownum<100/10+1),t20 AS
  5    (SELECT rownum-1 a20 FROM dual CONNECT BY rownum<100/20+1),t50 AS
  6    (SELECT rownum-1 a50 FROM dual CONNECT BY rownum<100/50+1)
  7  SELECT a2,
  8    a5,
  9    a10,
 10    a20,
 11    a50
 12  FROM t2,
 13    t5,
 14    t10,
 15    t20,
 16    t50
 17  WHERE a2*2+a5*5+a10*10+a20*20+a50*50=100;


        A2         A5        A10        A20        A50
---------- ---------- ---------- ---------- ----------
         0          0          1          2          1
         0          0          2          4          0
         0          0          3          1          1
         0          0          4          3          0
         0          0          5          0          1
         0          0          6          2          0
         0          0          8          1          0
         0          2          0          2          1
         0          2          1          4          0
         0          2          2          1          1
         0          2          3          3          0

五位数,ABCDE*4=EDCBA,这个四位数是多少?


SQL> WITH t AS
  2    (SELECT rownum r FROM dual CONNECT BY rownum<40000
  3    )
  4  SELECT r,4*r FROM t WHERE 4*r=reverse(r||'') AND r>10000 ;


         R        4*R
---------- ----------
     21978      87912



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

转载于:http://blog.itpub.net/30123160/viewspace-2058939/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值