位压缩
来源:互联网 发布:写java用什么eclipse 编辑:程序博客网 时间:2024/06/05 08:22
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;typedef long long LL;const int maxn=6200000;const int Max=1e8;char book[(Max)>>3+50];//int c[maxn]; // no delete?? ->reLL output[200000];struct Node{ int id,n;}a[12000];bool cmp(Node p,Node q){return p.n<q.n;}int cnt=0;struct Node2{ int val,gen;}d[200000];bool cmp2(Node2 p,Node2 q){return p.val<q.val;} int jud(int x){ int Back=x&7; int Pre=x>>3; if(book[Pre]&(1<<Back)) return 0; return 1;}void Set(int x){ int Back=x&7; int Pre=x>>3; book[Pre]=book[Pre]|(1<<Back);}int init(){ memset(book,0,sizeof(book)); int tmp=sqrt(Max); cnt=0; for(int i=2;i<=tmp;i++) { if(jud(i)) { for(int j=i+i;j<=Max;j=j+i) { if(jud(j)) Set(j); //j=26378238--stop?? //if(j>26378236) cout<<j<<endl; } for(long long int j=i*i;j<=Max;j=j*i) { d[cnt].gen=i; d[cnt++].val=j; } } } sort(d,d+cnt,cmp2); }int main(){ //freopen("C:/Users/hzy/Desktop/11.txt","r",stdout); init(); int t; scanf("%d",&t); for(int i=0;i<t;i++) {scanf("%d",&a[i].n);a[i].id=i;} sort(a,a+t,cmp); unsigned int ans=1; int st=0,p=0; for(int i=2;i<=Max;i++) { if(jud(i)) {ans=ans*i;} if(p<cnt&&d[p].val==i) {ans=ans*d[p].gen;p++;} while(st<t&&i==a[st].n){output[a[st].id]=ans;st++;} } for(int i=0;i<t;i++) printf("%u\n",output[i]); return 0;}
阅读全文
0 0
- 位压缩
- 位压缩
- POJ1753位压缩BFS
- hdu3006之位压缩
- poj1753 位压缩+bfs
- poj2965 位压缩+dfs
- 位运算状态压缩
- 8位一组压缩字符串
- POJ1753(BFS+位压缩)
- POJ 2411 位压缩dp
- POJ 2443 位压缩加速
- hdu1429位运算状态压缩
- poj 1753(位压缩+搜索)
- c++ bitset与位压缩
- POJ1143位操作+状态压缩
- POJ1753Flip Game(位压缩+bfs)
- int型32位压缩
- 压缩dp的位运算
- 宽度已知,实现三栏布局的方案(5种layout方案)
- Linux服务器Zookeeper+Dubbo环境搭建
- java基础语法之自加(++)自减(--)讲解-----看了就会!!!
- vue.js开发外卖App项目总结(二)
- rapidjson将map转为json------人生苦短,我用rapidjson
- 位压缩
- oracle--认识表与约束
- 单元测试多线程输出问题
- 投票决策系统的理论基础
- 亲加直播代码混淆
- Java编程思想---第一章笔记
- 从零基础认识事务
- 70. Climbing Stairs
- 用CXF中wsdl2java工具时抛出SAXParseException