首页 > 试题广场 >

小度的部队

[编程题]小度的部队
  • 热度指数:833 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小度的特种部队一共有n名士兵, 一天小度派所有士兵去探索野区。士兵们出发时沿着一条道路行进, 直到遇到三岔路口。
小度在出发前就给部队部署了部队划分规则: 当遇到三岔路口的时候, 部队若可以分为两个部分,并且两个部分的人数差恰好为k, 那么就完成部队划分, 划分的两个部分分别沿着两条路行进下去,否则该部队的所有士兵就在此位置停下扎营。
野区内有不计其数的三岔路口, 所以整个部队的每一个部分最终都会停下扎营,小度想知道最终扎营的总数为多少?

输入描述:
包括两个整数, 即部队中士兵的总人数和划分部队的参数。


输出描述:
一个整数,表示最终答案。
示例1

输入

10 2

输出

5

说明

10
/ \
6 4
/\ /\
4 2 3 1
/\
3 1
最终叶子节点个数即答案:5
var lines = readline().split(" ")
var n = parseInt(lines[0])
var k = parseInt(lines[1])
var count = 0
function result(n,k){
if(n<=k||(n-k)%2){ //不能划分的话记录count次数+1
    return count+=1
}else{
    var a = result((n+k)/2,k)
    var b = result((n-k)/2,k)
}
}
result(n,k)
console.log(count)
JS代码简单明了
发表于 2021-08-25 20:55:03 回复(0)