0

我有 0 到 3 个特定十进制数字的总和构建,可以构建 8 个不同的总和:

  100      ---      100      ---      100      ---      100      ---
  200      200      ---      ---      200      200      ---      ---
+ 400    + 400    + 400    + 400    + ---    + ---    + ---    + ---
-----    -----    -----    -----    -----    -----    -----    -----
  700      600      500      600      300      200      100        0

通过从特定偏移量开始将下一个较小的数字加倍来缩放十进制数字。例如,它们可能位于以下集合中:

  • { 300, 600, 1200, ..}
  • { 7, 14, 28, ..}

可以通过简单地除以偏移量然后运行位掩码检查来确定是否添加了特定数字:

(sum / offset) & 1 == true if the first decimal number is added.
(sum / offset) & 2 == true if the second decimal number is added.
(sum / offset) & 4 == true if the third decimal number is added.

还有比这更快的算法吗?

顺便说一句:由于这不完全是位掩码,所以如何调用它?十进制掩码?十进制和多路复用?带偏移的位掩码?总和掩蔽?WTF位掩码?

4

0 回答 0