楼主: newkid

[每日一题] PUZZLEUP 2015

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
21#
 楼主| 发表于 2015-7-30 21:53 | 只看该作者
solomon_007 发表于 2015-7-30 21:44
马上加薪  多谢!

转了。继续做你的加薪中国梦吧。
谁把附加题做出来再发一个章。

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
22#
发表于 2015-7-30 22:30 | 只看该作者
newkid 发表于 2015-7-30 21:40
给你发个章吧,要哪个?

附加题:


SQL> select banner from v$version;

BANNER
-------------------------------------------------------------------------------

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
PL/SQL Release 12.1.0.1.0 - Production
CORE    12.1.0.1.0      Production
TNS for 64-bit Windows: Version 12.1.0.1.0 - Production
NLSRTL Version 12.1.0.1.0 - Production

SQL> with function gcd(m int,n int)
  2  return int
  3  is
  4  begin
  5    if m<n then
  6      return gcd(n,m);
  7    end if;
  8    if n=0 then
  9      return m;
10    end if;
11    return gcd(m-n,n);
12  end;
13  t as (select level n from dual where level>=10 connect by level <100),
14  s as (
15    select a.n + b.n, count(*)*count(*) p, (90*89/2)*(90*89/2) q
16      from t a, t b
17     where a.n < b.n
18     group by  a.n + b.n
19    order by  a.n + b.n),
20  x as (
21    select q ,sum(p) as p
22     from s
23  group by q)
24  select q/gcd(q,p),p/(gcd(q,p))
25   from x
26  /

Q/GCD(Q,P) P/(GCD(Q,P))
---------- ------------
   1069335         7967

SQL>

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
23#
发表于 2015-7-30 22:33 | 只看该作者
newkid 发表于 2015-7-30 21:53
转了。继续做你的加薪中国梦吧。
谁把附加题做出来再发一个章。

12C  的, 算不算?

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
24#
 楼主| 发表于 2015-7-30 22:49 | 只看该作者
solomon_007 发表于 2015-7-30 22:33
12C  的, 算不算?

这其实是PL/SQL。你改写成11G递归WITH就算。

使用道具 举报

回复
论坛徽章:
94
生肖徽章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
25#
发表于 2015-7-31 00:34 | 只看该作者
来个spark的,不知道方便生成列表的语法,坑
val a=sc.parallelize(List(1,2,3,4,5,6,7,8,9,0))
val t=a.map(s=>(1,s))
val t2=t.join(t).filter(s=>s._2._1!=s._2._2)
t2.cache()
val b=t2.map(s=>(1, s._2._1+s._2._2))
val c=b.join(b).filter(s=>s._2._1==s._2._2).count()
val d=t2.count()
t2.unpersist()
println(c+"/"+d*d)

580/8100

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
26#
发表于 2015-7-31 00:53 | 只看该作者
SQL>
SQL> with t as (select level n from dual where level>=10 connect by level <100),
  2    s as (
  3      select a.n + b.n, count(*)*count(*) p, (90*89/2)*(90*89/2) q
  4        from t a, t b
  5       where a.n < b.n
  6       group by  a.n + b.n
  7      order by  a.n + b.n),
  8    x as (
  9      select q ,sum(p) as p
10       from s
11    group by q),
12  y(m,n,cnt) as
13     (select q m,p n, 1 cnt from x
14       union all
15      select case when m<n then n else m-n end,case when m<n then m else n end, cnt+1
16        from y
17       where cnt<=200) --这里如果写 n<=0 出现了循环, 所以就猜了个步数作为退出条件.
18  select q/z.m,p/z.m
19     from x,(select m from y where n = 0 and rownum=1) z
20  /
     Q/Z.M      P/Z.M
---------- ----------
   1069335       7967

SQL>

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
27#
发表于 2015-7-31 00:57 | 只看该作者
说错了,是 n>=0

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
28#
 楼主| 发表于 2015-7-31 01:09 | 只看该作者
udfrog 发表于 2015-7-31 00:34
来个spark的,不知道方便生成列表的语法,坑
val a=sc.parallelize(List(1,2,3,4,5,6,7,8,9,0))
val t=a. ...

100个的看你怎么写。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
29#
 楼主| 发表于 2015-7-31 01:11 | 只看该作者
solomon_007 发表于 2015-7-31 00:53
SQL>
SQL> with t as (select level n from dual where level>=10 connect by level

再给你一个章。
你WHERE明明可以写好一点?

WITH t AS (
SELECT LEVEL n FROM DUAL WHERE LEVEL>=10 CONNECT BY LEVEL<=99
)
,s AS (
SELECT t1.n+t2.n s
  FROM t t1,t t2 WHERE t1.n<t2.n
)
,r AS (
  SELECT COUNT(*) m,COUNT(CASE WHEN s1.s=s2.s THEN 1 END) n
  FROM s s1,s s2
)
,t2(m,n) AS (
SELECT m,n FROM r
UNION ALL
SELECT GREATEST(m-n,n),LEAST(m-n,n)
  FROM t2
WHERE m<>n
)
SELECT r.n/t2.m||'/'||r.m/t2.m FROM r,t2 WHERE t2.m=t2.n;

使用道具 举报

回复
论坛徽章:
94
生肖徽章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
30#
发表于 2015-7-31 01:13 | 只看该作者
newkid 发表于 2015-7-31 01:09
100个的看你怎么写。

估计应该有个指定首位和步长的生成集合的方法,可惜还不知道语法。
不过这表示算法的语法比sql直观多了,挺喜欢的

使用道具 举报

回复

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

本版积分规则 发表回复

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