编程珠玑--第一章使用位图
2012-07-25 22:33
239 查看
问题描述:一个最多包括n个正整数的文件,每个数都小于n,其中n=10000000.如果在输入文件中有任何整数重复出现的话就是致命错误。要求按升序输出这些数。
由于我们只能操纵字节,但是我们可以使用字节来操纵字节中的位,我们使用int(4个字节),如果我们想要将第k位置为1的话,我们只需要这样操作:
a[k/32]|pow(2,31-k%32),当我们要判断某位是不是1的时候,使用相似的方法:a[k/32]&pow(2,31-k%32)
由于我们只能操纵字节,但是我们可以使用字节来操纵字节中的位,我们使用int(4个字节),如果我们想要将第k位置为1的话,我们只需要这样操作:
a[k/32]|pow(2,31-k%32),当我们要判断某位是不是1的时候,使用相似的方法:a[k/32]&pow(2,31-k%32)
#include<iostream> #include<cmath> using namespace std; int a[312500]; int main(){ memset(a,0,sizeof(a)); //读文件 int readin; while(cin>>readin) a[readin/32]=a[readin/32]|(int)pow(2.0,31-readin%32); //判断 for(int i=0;i<10000000;i++) if((a[i/32]&(int)pow(2.0,31-i%32))!=0) cout<<i<<endl; return 0; }
相关文章推荐
- 我写的编程珠玑第一章位图的实现,使用C++
- 编程珠玑--位图在排序中的使用
- 编程珠玑--位图在排序中的使用
- [编程珠玑]-第一章:位图/位向量排序
- 多核处理器时,__rdtsc()的使用-编程珠玑第一章
- 【编程珠玑】第一章位图排序
- 关于编程珠玑第一章的体会
- 编程珠玑第一章
- 编程珠玑习题:数字重复出现位图排序
- 编程珠玑 第一章
- 编程珠玑之第一章习题7:处理程序存在的缺陷的问答与测试
- 【编程珠玑】第一章:开篇
- 转-编程珠玑第一章习题9
- VC编程使用3种方案实现位图图像灰度化
- 使用位图解决电话号码排序问题--编程珠玑学习笔记 第一章
- 编程珠玑 第一章 问题以及分析解答
- 编程珠玑 第一章解析
- 编程珠玑--如何使用位逻辑运算(例如不、或、移位)来实现位向量
- 编程珠玑:位图排序海量整数
- 对一千万条数据进行排序---编程珠玑第二版 第一章