& 在 C 中是位与。
示例:
m= 21(10101)
结果:
0 16 4 1 20 5 17 21
我的代码:
for(int i=0;i<=m;i++)
if ((i&m)==i) printf("%d ",i);
当 m 很大时,这会很慢。
如何快速找到结果(答案很少时,比如m=2^30)?
最佳答案
i = 0
repeat
print(i)
i = (i + (NOT m) + 1) AND m
until i == 0
更新:
更简单的代码:
i = 0
repeat
print(i)
i = (i - 1) AND m
until i == 0
关于algorithm - 在 C 中有效地生成所有整数 n,其中 n&m==n(m 是给定的整数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16507690/