查看: 1011|回复: 1

5bit数算法,求解

[复制链接]
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:06:282010年世界杯参赛球队:德国
日期:2010-03-02 13:45:37ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51Jeep
日期:2013-10-09 13:54:002014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
发表于 2016-9-19 15:40 | 显示全部楼层 |阅读模式
5bit数: 二进制中包含5个1的数,例如11111,1011011,100011101...

要求如下:
输入任意十进制a,b 参数, a<b,b<1000000000
(1). 求出a,b 之间的最小5bit数
(2). 求出a,b 之间所有5bit数的和

性能要求:输入50组测试用例,总消耗时间不能超过3s

求助各位专家, 小弟先谢过。
论坛徽章:
418
生肖徽章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:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
发表于 2016-10-15 21:01 | 显示全部楼层
with function fn_10to2(p_num number) return varchar2
is
   l_str varchar2(32767):=null;
   n1 number;
   n2 number;
begin
   n1 := p_num;
   loop
     n2 := mod(n1, 2);
     n1 := trunc(n1 / 2);
     l_str := to_char(n2) || l_str;
     exit when n1 = 0;
   end loop;
   return l_str;
end fn_10to2;
t as (select n,fn_10to2(n) v from (select level n from dual connect by level <=&b))
select min(n),sum(n) from t where regexp_count(v,'1')=5 and n between &a and &b

使用道具 举报

回复

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

本版积分规则 发表回复

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