codeforces 244B Restoring Table(“&”位运算)
来源:互联网 发布:原生js实现的效果 编辑:程序博客网 时间:2024/06/11 05:05
题目链接:
http://codeforces.com/problemset/problem/245/D
题目大意:
给一个矩阵b[i][j],对于矩阵中的每一个元素b[i][j],表示b[i][j]=a[i]&b[j],这里&符号是位运算符。要求根据给出的矩阵算出所有的a[i]。
思路:
把握&运算的特点,对于A&B,对于A与B中的某一位i,如果做&运算以后为1,可以肯定A和B在这一位上一定是1。对于a[1],既然给出了a[1]与其他a[i]的运算答案,就可以得到a[1]在各个位上的答案,那么a[1]也出来了,a[2]、a[3]……同理。
所以我可以建立一个二维数组,存下a[i]上每一位的数字(0或1),最后算出答案。
代码:
#include<stdio.h>#include<string.h>#include<math.h>int a[105][40];void work(int i,int j,int x){int k=0; while(x) { int b=x%2; if(a[i][k]==0) a[i][k]=b; if(a[j][k]==0) //i和j都要的,如果在这位上本身就是1了,就不必重复赋值了。 a[j][k]=b; k++; x=x/2; } return ;}int solve(int x){int ans=0; for(int i=0;i<40;i++) { ans=ans+a[x][i]*pow(2,i); } return ans;}int main(){int n,b[105][105],i,j,k;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++)for(j=1;j<=n;j++)scanf("%d",&b[i][j]);memset(a,0,sizeof(a));for(i=1;i<=n;i++)for(j=i+1;j<=n;j++){work(i,j,b[i][j]); //存下每一位的信息}for(i=1;i<n;i++){ int ans=solve(i); //根据各个位上的数算出这个数是多少printf("%d ",ans);}printf("%d\n",solve(n));}return 0;}
0 0
- codeforces 244B Restoring Table(“&”位运算)
- Restoring Table--CodeForces 245D--位运算
- Codeforces #353(div2)B.Restoring Painting
- CodeForces 245D Restoring Table
- CodeForces 245D Restoring Table
- codeforces 250B Restoring IPv6
- codeforces 675B Restoring Painting
- CodeForces 675B Restoring Painting
- 【Codeforces】675B - Restoring Painting
- 【CodeForces】[675B]Restoring Painting
- CodeForces 675B Restoring Painting
- [CodeForces]-675B-Restoring Painting
- Codeforces Round #353 (Div. 2)-B. Restoring Painting(数学)
- CodeForces - 675B Restoring Painting (暴力&转换)水
- 【CodeForces】675B - Restoring Painting(数学推导)
- CROC-MBTU 2012, Elimination Round / 245D Restoring Table (位运算)
- codeforces 486B OR in Matrix(位运算)
- CodeForces 675B D - Restoring Painting
- A+B for Input-Output Practice (IV)
- Android 多媒体——音频播放录制、视频播放、相机
- 10730 - Antiarithmetic?(水题)
- shellcode
- Linux 登录后各脚本的调用(尤指 Bash )
- codeforces 244B Restoring Table(“&”位运算)
- 反射机制(字段)
- hdu5437Alisha’s Party set模拟
- c#Dictionary键值对的使用
- HTML 文本格式化
- 集合(Collection集合)由来
- java 小小问题
- linux C++ 多线程 读者写者实现
- hdu5446 lucas+crt