算法计算和算法

由网友(朝三暮你)分享简介:我要计算和数字从0到(N)^ {1/2} - 1 各从0号到(N)^ {1/2} - 1 。我想这样做的 O(N)时,不能使用XOR,OR和操作。 I want to calculate AND of numbers from 0 to (n)^{1/2} - 1 with each of the numbe...

我要计算和数字从0到(N)^ {1/2} - 1 各从0号到(N)^ {1/2} - 1 。我想这样做的 O(N)时,不能使用XOR,OR和操作。

I want to calculate AND of numbers from 0 to (n)^{1/2} - 1 with each of the numbers from 0 to (n)^{1/2} - 1. I want to do this in O(n) time and can't use the XOR, OR, AND operations.

具体,我可以计算 X + 1和Y 如果我知道 X和Y

Specifically, can I calculate X+1 AND Y if I know X AND Y?

P.S。 - 内存模型正在这里假设和运算(加,乘,除)在<的log(n)位数字可以做的是恒定的时间。

P.S. - RAM model is being assumed here and operations (add, multiply, divide) on < log(n) bit numbers can be done is constant time.

推荐答案

是的。

开始用[1×1]格:

H(-1) = [ 0 ]

然后递归的应用:

Then apply the recursion:

H(i) = [ H(i-1)  H(i-1)
         H(i-1)  H(i-1)+(1 << i) ]

在这里,它表示矩阵级联。即每个递归加倍网格中的每个维度的大小。重复进行,直到达到所需的大小。

where that denotes matrix concatenation. i.e. each recursion doubles the size of the grid in each dimension. Repeat until you achieve the required size.

阅读全文

相关推荐

最新文章