楼主: 〇〇

Puzzleup 2013挑战赛即将开始

[复制链接]
论坛徽章:
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#
发表于 2013-7-25 21:46 | 只看该作者
〇〇 发表于 2013-7-25 21:37
plsql挑战里每周有个逻辑题,和这差不多,怎么不翻译了?

没什么人关注,就没继续了。其实那个题目更有意思的是写作弊程序,或者写自动猜测程序,我自己搞过了只是没有公开。

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-05-10 05:59:58
22#
发表于 2013-7-26 09:39 | 只看该作者
newkid 发表于 2013-7-25 21:34
你的方法就是我前面提到的方法。
这是个什么活动?就是没事闹着玩,可以看看前两年的贴:
http://www.i ...

这个题方法有多种
也可以
第一次称:一边4个
平衡   即两边是  XXYY = XXYY  ,  随便选一边,一边放两个 称第二次 :平衡即 XY = XY 问题解决                                                                                                    不平衡  XX ≠ YY 每边取一个问题解决

第一次不平衡: (1)XXXX ≠ YYYY :随便去一边称第二次  结果必然是平衡的 ,从一次分的两边各取一个,问题解决

                     (2) XXXY ≠ YYYX :随便去一边称第二次   结果必然是  XX ≠ XY  或者  YY≠ XY ,问题解决

解释下(2):因为不知道X与Y哪个重,所以  第一次称后 重的一边(重重重轻),  所以 第二次去重的一边称  结果必然是 重重 > 轻重  ,去轻的一边即为XY球
                                                                             轻的一边(轻轻轻重) 同理取重的一边即为XY球

使用道具 举报

回复
论坛徽章:
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
23#
发表于 2013-7-26 22:40 | 只看该作者
呆呆笨笨的鱼 发表于 2013-7-26 09:39
这个题方法有多种
也可以
第一次称:一边4个

最后利用轻重结果的方法很巧妙。

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
16
2013年新春福章
日期:2013-02-25 14:51:24美羊羊
日期:2015-03-04 14:54:27凯迪拉克
日期:2014-11-20 09:13:05马上有钱
日期:2014-02-18 16:49:312014年新春福章
日期:2014-02-18 16:49:31优秀写手
日期:2013-12-18 09:29:13法拉利
日期:2013-10-18 16:22:26ITPUB社区12周年站庆徽章
日期:2013-10-08 17:44:42ITPUB社区12周年站庆徽章
日期:2013-10-08 15:00:34ITPUB社区12周年站庆徽章
日期:2013-10-08 14:54:39
24#
发表于 2013-7-27 21:17 | 只看该作者
这个题隐含,X,Y重量不等。
随机分成4,4。第一次称重则有2中结果:
1),平衡。拿天平随便一端,分成2,2,第二次称重,可能有,平衡,与不平衡,平衡的话,就可以拿天平一端的2个就是质量不等的2个球。不平衡的话,天平左右各那一个。
2),不平衡,在天平2端各取2球,分成2,2,同一。
答案:二次。

使用道具 举报

回复
论坛徽章:
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
25#
发表于 2013-7-31 22:06 | 只看该作者
#2 Coins
In a country circulating coins exist in denominations of 1u (unit), 5u, 10u, 20u, 25u, 50u, and 100u. Your goal is to select X of these coins to make exactly 100u. What is the smallest value of X that makes it impossible to reach your goal?

Note: X > 0
硬币:有一个国家流通硬币面额为1u,5u,10u,20u,25u,50u和100u(u是货币单位). 你的目标是选出X个硬币刚好凑成100u. X最小为多少, 才能使得你的目标无法达到?

这个用SQL暴力很容易。

使用道具 举报

回复
论坛徽章:
93
生肖徽章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
26#
发表于 2013-7-31 23:05 | 只看该作者
newkid 发表于 2013-7-31 22:06
#2 Coins
In a country circulating coins exist in denominations of 1u (unit), 5u, 10u, 20u, 25u, 50u ...

感觉这个可以分成1, 5 10 20, 25 50 100三组,用sql求出1-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
27#
发表于 2013-7-31 23:25 | 只看该作者
哪里用那么麻烦,就是笛卡尔积嘛,一下子就算出来了:
SELECT LEVEL N FROM DUAL WHERE LEVEL>1 CONNECT BY LEVEL<=100
MINUS
SELECT DISTINCT C5+C10+C20+C25+C50+100-(5*C5+10*C10+20*C20+25*C25+50*C50)
  FROM (SELECT LEVEL-1 c5  FROM DUAL CONNECT BY LEVEL-1<=20)
      ,(SELECT LEVEL-1 c10 FROM DUAL CONNECT BY LEVEL-1<=10)
      ,(SELECT LEVEL-1 c20 FROM DUAL CONNECT BY LEVEL-1<=5)
      ,(SELECT LEVEL-1 c25 FROM DUAL CONNECT BY LEVEL-1<=4)
      ,(SELECT LEVEL-1 c50 FROM DUAL CONNECT BY LEVEL-1<=2)
WHERE 5*C5+10*C10+20*C20+25*C25+50*C50<=100
ORDER BY 1;


        N
---------
       85
       86
       89
       90
       93
       94
       95
       97
       98
       99      

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
28#
 楼主| 发表于 2013-8-1 09:18 | 只看该作者
newkid 发表于 2013-7-31 22:06
#2 Coins
In a country circulating coins exist in denominations of 1u (unit), 5u, 10u, 20u, 25u, 50u ...

100个可以,99个就不行,因为全1不够,98个1+1个5太多

使用道具 举报

回复
论坛徽章:
93
生肖徽章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
29#
发表于 2013-8-1 13:58 | 只看该作者
newkid 发表于 2013-7-31 23:25
哪里用那么麻烦,就是笛卡尔积嘛,一下子就算出来了:
SELECT LEVEL N FROM DUAL WHERE LEVEL>1 CONNECT B ...

嗯,刚开始怕性能不行,也没仔细算下数据量,土鳖了。
写了个plsql的,plsql水平太差了,啥也不知道,一顿查。。。
declare
cnt int:=0;
type nt is table of pls_integer;
v_nt    nt;
begin
    select  rownum
    bulk collect into v_nt
    from    dual
    connect by rownum<=100;
    for i100 in 0..1 loop
        for i50 in 0..(100-100*i100)/50 loop
            for i25 in 0..(100-100*i100-50*i50)/25 loop
                for i20 in 0..(100-100*i100-50*i50-25*i25)/20 loop
                    for i10 in 0..(100-100*i100-50*i50-25*i25-20*i20)/10 loop
                        for i5 in 0..(100-100*i100-50*i50-25*i25-20*i20-10*i10)/5 loop
                            v_nt.delete(100-100*i100-50*i50-25*i25-20*i20-10*i10-5*i5+i5+i10+i20+i25+i50+i100);
                        end loop;
                    end loop;
                end loop;
            end loop;
        end loop;
    end loop;
    dbms_output.put_line(v_nt.first);
end;
/

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
30#
 楼主| 发表于 2013-8-1 14:33 | 只看该作者
〇〇 发表于 2013-8-1 09:18
100个可以,99个就不行,因为全1不够,98个1+1个5太多

96可以=95*1+1*5
95又不行了
。。

使用道具 举报

回复

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

本版积分规则 发表回复

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