首页 > 试题广场 >

一根长度为10000米长的棍子,需要被切割成10000根长度

[单选题]
一根长度为10000米长的棍子,需要被切割成10000根长度为1米的小段,若一次可以同时切割多根棍子,问最少需要切割几次?
  • 14
  • 15
  • 16
  • 13
推荐
规则:
1、偶数,则对折切,如10000,可以对切为2个5000;
2、奇数,则变成2个数,如625,可以切成312和313;
3、奇偶一起,则将棍子左对齐,对偶数棍子折半,奇数棍子就自然拆分成偶数的一半和剩余的部分,如312(313)两种长度一起时,左对齐,对312折半为156,则313被切成了156和157;
第一刀:10000——5000
第二刀: 5000——2500
第三刀: 2500——1250
第四刀: 1250——625
第五刀: 625——312(313)
第六刀:312(313)——156(157)
第七刀: 156(157)——78(79)
第八刀:78(79)——39(40)
第九刀:40(39)——20(19)
第十刀: 20(19)——10(9)
第十一刀:10(9)——5(4)
第十二刀:4(5)——2(3)
第十三刀:2(3)——1(2)
第十四刀:2——1
编辑于 2016-11-14 13:39:45 回复(7)
剪成2段需要一刀(log22 ),
剪成4段至少需要两刀(log24 ),
.......
剪成2 n 段至少需要 n刀

213<10000<214
所以需要14刀
发表于 2015-10-04 15:28:28 回复(3)
2^13=8192 2^14=16384 8192<1000<16384 所以就是14了
发表于 2015-09-30 10:05:57 回复(0)
每次折半,中间可能不能整除2,但是还是不影响最后的结果,2^13< 10000<2^14=16384
发表于 2016-04-07 13:02:19 回复(0)
最大数字是10000,由于得到的最小的是1,可以想到2^n,所以我们将小于10000的2^n那个数字拿出来,这里是8192,所以第一刀直接切8192和1808
第二刀:8192->4096    1808->(1024+784)
第三刀:4096->2048    1024->512   784->(512+272)
第四刀:2048->1024    512->256     512->256   272->(256+16)
第五刀:1024->512      256->128     256->128   256->128   16->8
第六刀,上面全变成了2^n的形式,所以一直对切就行现在就取最大的那个就行
                512->256
第七刀:256->128
第八刀:128->64
第九刀:64->32
第十刀:32->16
第十一刀:16->8
第十二刀:8->4
第十三刀:4->2
第十四刀:2->1
完成
发表于 2021-10-23 15:00:49 回复(0)
我来答看看。
10000 = 8192 + 1808(count+1
8192 = = 213
1808 = 1024 + 512 + 256 + 16
1、8192需要13次;(count+13
2、1808的分割可以在8192的分割过程中一起完成,所以不占多余次数
发表于 2017-08-26 09:32:43 回复(0)
答案:A
一次两根,两次4根,所以最少切割次数 n 即 2n-1<10000<2n,213 = 8912,214 = 16384 ,所以n = 14
发表于 2015-09-30 16:48:21 回复(0)
2∧10=1024; 10000≈1024×100≈2∧10×2∧4;即至少需要10+4=14次
发表于 2017-07-23 01:20:45 回复(0)
2^13=8192,2^14=16384。所以应该纠结是2的k次方,还是2的k次方减1。当绳为3时,对应2^2,切2刀,所以为k,最后结果为14
发表于 2017-03-31 08:43:34 回复(0)
n = 10**4
if (n&(n-1)==0):
    count = 0
else:
    count = 1
while n > 1:
    if n % 2 == 0:
        count += 1
        n //= 2
    else:
        n -= 1
print(count)

发表于 2022-10-28 16:33:20 回复(0)
10000 / 5000 / 250 /1250/(624,626)/(312,314)/(156,158)/(78,80)/(36,40)/(18,20)/(8,10)/(4,6)/(2,4)/(2)
每次切割之后,合并相同的情况,并且确保每次切割之后,棒长为偶数。点赞哦,么么哒。
发表于 2017-08-24 20:46:26 回复(0)
为了可以同时切割多根以及切割一次效率最大,将其切割成一半最佳。如此,每次都将上次木棍切割成一半。则,在一定范围内,当切割n次时,获得2的n次方个1m木棍。故,当2的n次方大于10000时,切割n次获得10000根1m 木棍
发表于 2024-04-21 15:03:37 回复(0)
2分法吧,确实快。

发表于 2023-11-03 15:58:38 回复(0)
12次可以完成,10000(对折一次)5000(对折一次)2500(对折一次)1250(对折一次)625(折成5层左右各两刀)125(同上)25(同上)5(同上)1
发表于 2023-05-16 00:06:05 回复(0)
  偶数对折,奇数减一再对折
发表于 2020-05-07 21:10:58 回复(0)
这题是自己考虑的不够全面,可以继续一半一半的切,后面分奇偶考虑即可。不用强行把奇变偶再去切。
发表于 2020-03-10 09:38:46 回复(0)
棍子怎么对折?
发表于 2019-08-09 13:52:57 回复(0)
10000=8192+1808,其中1808=1024+512+216+32+16+8. 
第1刀砍成8192和1808两端,之后按照2的幂往下砍13刀,一共14刀。
发表于 2017-10-08 13:39:56 回复(0)
5000
2500
1250
1024   126(并行处理,其实1024大于126,那126就可以忽略了)
512     64    62 
256     32   32  30(后面不写了,就这原理)
128
64
32
16
8
4
2
1
或者2 14  = 16384>10000> 2 13

发表于 2016-09-14 16:59:11 回复(0)
213 <10000<214 ,所以说至少14刀,切的方式是第一次213 ,10000-213 ,下一次就是212 ,10000-213 -212 ,以此类推。
发表于 2016-09-04 16:58:41 回复(0)
选A,这个题类似于折半查找,直接用log2N就能算出来,当N=10000时,得到的结果向上取整,就是要求的次数
发表于 2015-10-19 09:32:50 回复(0)