有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组。
  答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果。

 Input
  第一行输入一个整数n。(1<=n<=1,000,000).
  第二行有n个整数a[0],a[1],a[2],...a[n-1],以空格分开.(0<=a[i]<=1,000,000)
 Output
  对于每一组数据,输出一个整数。

  又是没见过的姿势...

  如果对于每个数x都可以算出a[i]&x==x的数的个数的话就可以算了。

  f[i][j]表示 有多少个数 与j 得到的结果和j二进制表示下第i位到第20位相同(最低位为第0位),第0到i-1位都和j完全一样。

  初始化f[20][i]=读入的数组中等于i的数的个数。

  f[i][j]=

    f[i+1][j],j的第i位上是1

    f[i+1][j]+f[i+1][j+2^i],j的第i位上是0

  最后再容斥统计一波,ans=sum{ -1^num1 *f[0][i] }。i=0..2^20-1,num1是i二进制下1的个数

 #include<cstdio>
#include<iostream>
#include<cstring>
const int maxn=,modd=;
int f[maxn],a[maxn],two[maxn],n1[maxn];
int i,j,k,n,m; int ra,fh;char rx;
inline int read(){
rx=getchar(),ra=,fh=;
while((rx<''||rx>'')&&rx!='-')rx=getchar();
if(rx=='-')fh=-,rx=getchar();
while(rx>=''&&rx<='')ra*=,ra+=rx-,rx=getchar();return ra*fh;
}
inline void MOD(int &x){
if(x>=modd)x-=modd;else if(x<)x+=modd;
}
int main(){
n=read();int mx=(<<)-;register int i,j;
for(i=;i<=n;i++)f[a[i]=read()]++;
for(i=two[]=;i<=n;i++)MOD(two[i]=two[i-]<<);
for(i=;i>=;i--)
for(j=;j<=mx;j++)
if(!((j>>i)&))f[j]+=f[j|(<<i)];
int ans=;
for(i=;i<=mx;i++){//printf("i:%d f:%d\n",i,f[i]);
n1[i]=n1[i>>]+(i&);
if(n1[i]&)MOD(ans-=two[f[i]]);else MOD(ans+=two[f[i]]);
}
printf("%d\n",ans);
}

最新文章

  1. java排序学习笔记
  2. 第一章 Linux內核簡介
  3. java-汉字转换拼音-pinyin4j.jar
  4. matlab 获取鼠标位置
  5. Oracle执行计划
  6. VS2013打开项目提示此版本的应用程序不支持其项目类型(.csproj)
  7. POJ1845Sumdiv(求所有因子和 + 唯一分解定理)
  8. LA 3415 (二分图+最大独立集)
  9. 发布常见问题(C#)
  10. eclipse sdk 无法更新
  11. 亚马逊左侧导航(jquery.menuaim.js)
  12. 一个方便的shell命令,查看软件安装目录
  13. jsp 页面获取xml的内容
  14. Postman newman
  15. frame、bounds表示大小和位置的属性以及center、position、anchorPosition
  16. Lock使用实例
  17. VMware启动时提示我已移动或我已复制该虚拟机
  18. NIO类库
  19. 末学者笔记--Linux计划任务及压缩归档
  20. c# EF code First生成数据库以及表

热门文章

  1. Hibernate学习---单表查询
  2. Mybatis-----优化配置文件,基于注解CR
  3. xamarin android checkbox自定义样式
  4. Find all factorial numbers less than or equal to N
  5. bzoj 4898: [Apio2017]商旅
  6. bzoj 2959: 长跑
  7. bzoj 2119: 股市的预测
  8. js怎么防止变量冲突
  9. 浅析Node.js的Event Loop
  10. UWP 应用通知Notifications