题目链接:http://codeforces.com/contest/245/problem/D
题意:给出一个矩阵b,b[i][j]=a[i]&a[j],b[i][i]=-1。然后求a[i]。
题解:要知道&运算后只有一位同时为1时结果才是1所以可以得
a[i]可以是b[i][1~n]所有状态的和。
#include <iostream> #include <cstring> using namespace std; int b[110][110] , a[110]; int main() { int n; cin >> n; for(int i = 1 ; i <= n ; i++) { for(int j = 1 ; j <= n ; j++) { cin >> b[i][j]; } } memset(a , 0 , sizeof(a)); for(int i = 1 ; i <= n ; i++) { for(int j = i + 1 ; j <= n ; j++) { a[i] |= b[i][j]; } for(int j = 1 ; j < i ; j++) { a[i] |= b[j][i]; } } for(int i = 1 ; i <= n ; i++) { cout << a[i] << ' '; } cout << endl; return 0; }