Math 返回容器中项目数函数的数学帮助

Math 返回容器中项目数函数的数学帮助,math,algebra,differential-equations,Math,Algebra,Differential Equations,这应该很简单,但我搞不懂数学。我想用C++来表达这个,但是一些pSueDO代码会很高兴,或者只是数学。 函数将被赋予一个容器的编号,它将返回该容器中的项数。项目的数量基于其数量和一定数量高度的一半 第一次减半的数量为43200,之后每次减半的数量为前一次减半加上43200之间的集装箱间隙数量 这听起来可能令人困惑,它将如下所示 1 to 43200 = 512 43201 to 86400 = 256 86401 to 129600 = 128 129601 to 172800 = 64 17

这应该很简单,但我搞不懂数学。我想用C++来表达这个,但是一些pSueDO代码会很高兴,或者只是数学。 函数将被赋予一个容器的编号,它将返回该容器中的项数。项目的数量基于其数量和一定数量高度的一半

第一次减半的数量为43200,之后每次减半的数量为前一次减半加上43200之间的集装箱间隙数量

这听起来可能令人困惑,它将如下所示

1  to 43200 = 512
43201 to 86400 = 256
86401 to 129600 = 128
129601 to 172800 = 64
172801 to 216000 = 32
216001 to 259200 = 16
and so
因此,如果给出一个最大为43200的数字,结果是512,那么数字130000将返回64。该值可以小于1,并占用几个小数位

      N = (noitems + 1) / 43200;
      L2 = log(512) / log(2);
      answer = exp( log(2) * (1 + L2 - N) );

此代码将采用箱号。它将不断减去减半间隔,直到您到达正确的库存区域,然后在完成后返回库存。

因此,无论数字中有多少43200,都是在512上完成了多少除以2的除法。重复除法是一个指数/根,或者是2除法的一个移位,但是你说它可以在0和1之间,所以这并不总是有效的。
global halvingInterval = 43200
global startingInventory = 512

def boxInventory(boxNumber):
    currentInventory = startingInventory
    while(boxNumber > halvingInterval):
        currentInventory = currentInventory/2
        boxNumber -= halvingInterval
    return currentInventory