我总结了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.
有没有比这更快的算法?
顺便说一下:由于这不完全是位掩码,它是如何调用的?十进制掩蔽?十进制和多路复用?带偏移的Bitmasking?总和掩盖? WTF位屏蔽?