-------------------------------------------------------------------------------------
sth to add
-------------------------------------------------------------------------------------
H.
C/C++中__builtin_popcount()用于计算一个 32 位无符号整数有多少个位为1
GCC有一个叫做__builtin_popcount的内建函数,它可以精确的计算1的个数。尽管如此,不同于__builtin_ctz,它并没有被 翻译成一个硬件指令(至少在x86上不是)。相反的,它使用一张类似上面提到的基于表的方法来进行位搜索。这无疑很高效并且非常方便。
#include<stdio.h> int n,t,m,k,v[105]; int main(){ scanf("%d%d%d",&n,&m,&k); for(int i=0;i<n;i++){ bool flag=1; for(int j=1;j<=t;j++){ int cnt=__builtin_popcount(i^v[j]); if(cnt<k){flag=0;break;} } if(flag) v[++t]=i; if(t==m) break; } for(int i=1;i<=m;i++) printf("%d ",v[i]); return 0; }