Independente da alternativa que você escolher para resolver o problema, é importante notar que duas posições do conector só podem ser compatíveis se em uma delas tiver um plugue e em outra uma tomada. Isso é a cara do ou exclusivo, onde dá verdadeiro se um e somente um dos valores é 1.
Alternativa 1 - Simulação
Para fazer a simulação, basta representar os conectores como um vetor e depois verificar cada posição, no primeiro caso de conectores iguais pode-se descartar a pesquisa e apresentar o veredito.
#include<stdio.h>intmain(){int X[5], Y[5];int compativel;for(int i =0; i <5; ++i){scanf("%d",&X[i]); }for(int i =0; i <5; ++i){scanf("%d",&Y[i]); } compativel =1;for(int i =0; i <5; ++i){if(X[i] == Y[i]){ compativel =0;break; } }printf("%c\n", compativel ?'Y':'N');return0;}
#include<iostream>usingnamespace std;intmain(){intX[5],Y[5];bool compativel;for(int i =0; i <5; ++i){ cin >>X[i]; }for(int i =0; i <5; ++i){ cin >>Y[i]; } compativel =true;for(int i =0; i <5; ++i){if(X[i] ==Y[i]){ compativel =false;break; } } cout << (compativel ?'Y':'N') << endl;return0;}
let input =require('fs').readFileSync('/dev/stdin','utf8');let lines =input.split('\n');letX=lines.shift().trim().split(' ').map((x) =>parseInt(x));letY=lines.shift().trim().split(' ').map((x) =>parseInt(x));let conectores = [];for(let i =0; i <5; ++i){conectores.push([X[i],Y[i]]);}console.log(conectores.every((x) => x[0] !== x[1]) ?'Y':'N');
X = [int(x)for x ininput().strip().split(' ')]Y = [int(x)for x ininput().strip().split(' ')]compativel =Truefor i inrange(5):if(X[i]== Y[i]): compativel =Falsebreakprint('Y'if compativel else'N')
Alternativa 2 - Mexer com números binários
Nessa alternativa, acreditamos ser mais interessante transformar os dois conectores em números binárias e fazer a comparação apenas uma vez, onde o objetivo é que a operação ou exclusivo dê verdadeiro nas cinco posições. Com isso, o resultado procurado é 11111, que na base 10 é igual a 31.
#include<stdio.h>intmain(){int X, Y, a; X =0;for(int i =0; i <5; ++i){scanf("%d",&a); X *=2; X += a; } Y =0;for(int i =0; i <5; ++i){scanf("%d",&a); Y *=2; Y += a; }printf("%c\n", (X ^ Y) ==31?'Y':'N');return0;}
#include<iostream>usingnamespace std;intmain(){int X, Y, a; X =0;for(int i =0; i <5; ++i){ cin >> a; X *=2; X += a; } Y =0;for(int i =0; i <5; ++i){ cin >> a; Y *=2; Y += a; } cout << ((X ^ Y) ==31?'Y':'N') << endl;return0;}
let input =require('fs').readFileSync('/dev/stdin','utf8');let lines =input.split('\n');X=parseInt(lines[0].trim().split(' ').join(''),2);Y=parseInt(lines[1].trim().split(' ').join(''),2);console.log(`${(X^Y) ==31?'Y':'N'}`);