ITPub博客

首页 > 数据库 > Oracle > 趣味题

趣味题

原创 Oracle 作者:stilllovekk 时间:2016-03-17 16:43:37 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2015-01-30

  • 博文量
    20
  • 访问量
    29318