#define BITSPERWORD 32
#define SHIFT 5
#define MASK 0x1F
#define N 10000000
int a[1 + N/BITSPERWORD];//申请内存的大小
//set: set the bit to 1
void set(int i) {
a[i>>SHIFT] |= (1<<(i & MASK));
}
//clr init all bit to zero
void clr(int i) {
a[i>>SHIFT] &= ~(1<<(i & MASK));
}
//test: test the bit is if 1
int test(int i){
return a[i>>SHIFT] & (1<<(i & MASK));
}
int main()
{
int i;
for (i = 0; i < N; i++)
clr(i);
while (scanf("%d", &i) != EOF)//ctrl+z enter表结束
set(i);
for (i = 0; i < N; i++)
if (test(i))
printf("%d\n", i);
return 0;
}
bitmap技术简单实现
最新推荐文章于 2024-08-29 20:30:21 发布