HDU 4810 Wall Painting(异或数学)
来源:互联网 发布:参加淘宝邀请的活动 编辑:程序博客网 时间:2024/05/17 22:16
思路:异或的题一般要拆成二进制来看,对于每一位来说有奇数个1的时候才会是1,然后对于每一位算一个组合累加起来就可以了
#include<bits/stdc++.h>using namespace std;const int mod = 1e6+3;const int maxn = 1005;int a[maxn],ans[maxn],C[maxn][maxn];int n;#define LL long longvoid init(){C[0][0]=C[1][0]=C[1][1]=1;for(int i = 2;i<maxn;i++){C[i][0]=1;for(int j = 1;j<=i;j++)C[i][j]=(C[i-1][j]+C[i-1][j-1])%mod;}}void getone(int x){for(int i = 0;i<32;i++)if(x&(1<<i))a[i]++;}int main(){init(); while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));memset(ans,0,sizeof(ans));for(int i =1 ;i<=n;i++){int temp;scanf("%d",&temp);getone(temp);}for(int i = 1;i<=n;i++){for(int j = 0;j<32;j++){for(int k = 1;k<=a[j]&&k<=i;k+=2)ans[i]=(ans[i]+(LL)C[n-a[j]][i-k]*C[a[j]][k]%mod*((1<<j)%mod)%mod)%mod;}} for (int i = 1; i <= n; i++) printf("%d%c", ans[i], i == n ? '\n' : ' ');}}
0 0
- HDU 4810 Wall Painting(异或数学)
- HDU 4810 Wall Painting(组合数学)
- HDU 4810 Wall Painting 异或性质
- HDU 4810 Wall Painting(异或 +按位容斥)
- HDU 4810 Wall Painting(异或 组合数)
- hdu 4810 Wall Painting(二进制+组合数学)
- HDU 4810 Wall Painting(组合数学)
- hdu 4810 Wall Painting(组合数学)
- HDU - 4810 Wall Painting(组合数学)
- hdu 4810 Wall Painting(组合数学)
- HDU Problem - 4810 Wall Painting【组合数学】
- 【HDU 4810】组合数学 Wall painting
- HDU 4810 Wall Painting (位操作-异或)
- HDU 4810 Wall Painting【二进制+异或+暴力枚举】
- HDU 4810 Wall Painting
- hdu 4810 Wall Painting
- hdu 4810 Wall Painting
- HDU-4810 Wall Painting
- 概率主题模型与LDA模型公式推导(1)
- Java Web之Html
- node.js
- 顺序表应用3:元素位置互换之移位算法
- 对于RSA算法的一些理解
- HDU 4810 Wall Painting(异或数学)
- 常用的linux命令-wget
- 数据结构实验之串一:KMP简单应用
- 跟我一起写Makefile(7)--- 环境变量MAKEFILES+make的工作方式
- javascript-js 的prototype原型理解讲解
- 顺序表应用5:有序顺序表归并
- Codeforces 703D 树状数组
- 七牛web端云存储第一势
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)