发几个今天上午百度的笔试题让各位大大解解

[复制链接]
查看11 | 回复4 | 2010-10-8 09:31:21 | 显示全部楼层 |阅读模式
传说百度BT今天去笔试百度DBA岗位见识了:为了不需此行发两个题吧。。。
第一题:
两个数A,B,A>0,0[B] with t as(select level a from dual connect by level c/11/17
1* with t as(select level a from dual connect by level /
POW
------
000
016
024
037
048
049
051
056
072
096
100
104
121
125
128
136
144
147
152
161
163
169
171
176
177
184
187
192
196
197
201
207
216
224
225
241
243
248
249
253
256
289
293
296
304
323
329
331
336
343
352
368
373
375
384
401
407
416
441
449
456
481
489
496
497
504
512
517
521
536
543
561
569
576
592
601
607
609
611
616
625
633
641
649
651
656
664
673
683
688
691
696
721
728
729
736
743
744
757
761
768
771
776
784
793
801
807
808
809
824
832
841
849
856
857
864
881
888
904
907
913
929
931
933
936
937
943
961
969
976
984
992

已选择133行。
回复

使用道具 举报

千问 | 2010-10-8 09:31:21 | 显示全部楼层
OO很好,很强大,但我估计最后三位因该用AB表示
回复

使用道具 举报

千问 | 2010-10-8 09:31:21 | 显示全部楼层
1,应该是位运算可以解决
2,看看c语言方面的文档应该没啥问题,多年不看c了
唉,这样的题目,无话可说。。。必须以前注意过看过相关内容,研究过才行的。(不过没啥事我整这些内容干啥)这样的人以前我有同学是,后来去中科院,现在去美国了。
俺不是这样的人,所以我不去这样的地方,呵呵。
回复

使用道具 举报

千问 | 2010-10-8 09:31:21 | 显示全部楼层
第一题是数学题呢?还是用程序来处理的意思呢?
回复

使用道具 举报

千问 | 2010-10-8 09:31:21 | 显示全部楼层
第一题是考思路吧,既然只关心power(A,B)的后三位P,那实际上P的值与power(substr(A, length(A)-2), B)的后三位P\'的值是一样的
为便于书写,我们记P(n)为n的后三位数字,不足三位的按实际走
则有P(power(A,B+1))=P(power(A,B)*A)=P(power(P(A), B)*P(A))=P(power(P(A), B))*P(A)
故而只需要考察2~999之间的数字即可,至于B,是否真的需要考察1~9999的范围,得计算后再说
————————————————————————————————————————————————————————————————
先看看A=2时的情况
select p, count(*), max(rn), min(rn) from(select substr(A, length(A)-2) p, rn from (select power(2, rownum) a, rownum rnfrom dual connect by rownum1
order by 4
/
P
COUNT(*)MAX(RN)MIN(RN)
---------------------------------------- ---------- ---------- ----------
128
2107
7
256
2108
8
512
2109
9
024
2110 10
048
2111 11
096
2112 12
192
2113 13
384
2114 14
768
2115 15
536
2116 16
072
2117 17
144
2118 18
288
2119 19
576
2120 20
152
2121 21
304
2122 22
608
2123 23
216
2124 24
432
2125 25
864
2126 26
728
2127 27
P
COUNT(*)MAX(RN)MIN(RN)
---------------------------------------- ---------- ---------- ----------
456
2128 28
912
2129 29
824
2130 30
24 rows selected.
单独观察一下100~109次幂的情况
select substr(A, length(A)-2) p, rn from (select power(2, rownum+99) a, rownum+99 rnfrom dual connect by rownum<=10)
P
RN
---------------------------------------- ----------
376
100
752
101
504
102
008
103
016
104
032
105
064
106
128
107
256
108
512
109
10 rows selected.
可以发现从103开始,已经出现回归的现象了,所不同的是,P(2^3)=8,而P(2^103)=008
当处理到107次幂时,后三位数128已经不存在前导0了,于是就和7次幂的结果128重合了,在此处出现了“回归”
于是容易推出,从207次幂开始,又将再次“回归”
————————————————————————————————————————————————————————————————
回到题目本身,上面这一大段其实都可以不用去看不用去分析,面试的时候哪儿有可能给你工具去做这么大量的计算,所以,对于楼主的问题,我会这么回应:
A的B次幂的后三位数(是1~999之间的一个或一组数字。对于A=1,则P总是1,对于A为10的整数倍的,最多从3次幂开始,P就都是000。)
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行