HackerEarth Binary associativity problem solution YASH PAL, 31 July 2024 In this HackerEarth Binary associativity problem solution, A binary operation * on a set S is called associative if it satisfies the associative law: (x * y) * z = x * (y * z) for all x, y, z in S. For the binary set S = {0,1} and a particular binary operator *, you are given its truth table. Determine if the operation is associative. HackerEarth Binary associativity problem solution. #include <bits/stdc++.h>using namespace std;int F[4];int func(int a, int b){ if(a == 0 && b == 0) return F[0]; else if(a == 0 && b == 1) return F[1]; else if(a == 1 && b == 0) return F[2]; else return F[3];}bool isGood(int a, int b, int c){ return func(func(a, b), c) == func(a, func(b, c));}int main(){ int T; cin >> T; while(T--) { for(int i=0; i<4; i++) cin >> F[i]; bool is_associative = true; for(int a=0; a<=1; a++) for(int b=0; b<=1; b++) for(int c=0; c<=1; c++) is_associative &= isGood(a, b, c); if(is_associative) cout << "Yesn"; else cout << "Non"; } return 0;} Second solution #include <bits/stdc++.h>using namespace std;int main(int argc, char* argv[]) { if(argc == 2 or argc == 3) freopen(argv[1], "r", stdin); if(argc == 3) freopen(argv[2], "w", stdout); int t, c[2][2], x1, x2, x; bool flag; assert(cin >> t); assert(1 <= t and t <= 8); for(int test = 0; test < t; test++) { for(int i = 0; i < 2; i++) { for(int j = 0; j < 2; j++) { assert(cin >> c[i][j]); assert(0 <= c[i][j] and c[i][j] <= 1); } } flag = true; for(int i = 0; i < 2; i++) { for(int j = 0; j < 2; j++) { for(int k = 0; k < 2; k++) { x = c[k][j]; x1 = c[x][i]; x = c[j][i]; x2 = c[k][x]; if (x1 != x2) flag = false; } } } cout << (flag ? "Yes" : "No") << endl; } assert(!(cin >> t)); return 0;} coding problems