Skip to content
Programmingoneonone
Programmingoneonone
  • Home
  • CS Subjects
    • Internet of Things (IoT)
    • Digital Communication
    • Human Values
  • Programming Tutorials
    • C Programming
    • Data structures and Algorithms
    • 100+ Java Programs
    • 100+ C Programs
  • HackerRank Solutions
    • HackerRank Algorithms Solutions
    • HackerRank C problems solutions
    • HackerRank C++ problems solutions
    • HackerRank Java problems solutions
    • HackerRank Python problems solutions
Programmingoneonone

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

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 solutions

Post navigation

Previous post
Next post

Pages

  • About US
  • Contact US
  • Privacy Policy

Programing Practice

  • C Programs
  • java Programs

HackerRank Solutions

  • C
  • C++
  • Java
  • Python
  • Algorithm

Other

  • Leetcode Solutions
  • Interview Preparation

Programming Tutorials

  • DSA
  • C

CS Subjects

  • Digital Communication
  • Human Values
  • Internet Of Things
  • YouTube
  • LinkedIn
  • Facebook
  • Pinterest
  • Instagram
©2025 Programmingoneonone | WordPress Theme by SuperbThemes