gpt4 book ai didi

algorithm - 在 C 中有效地生成所有整数 n,其中 n&m==n(m 是给定的整数)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:07 27 4
gpt4 key购买 nike

& 在 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com