Opérations au niveau des bits

Parfois, il est nécessaire d’effectuer des opérations sur des paires de nombres binaires. Si nous avons deux nombres a et b, nous pouvons vouloir que tous les bits soient mis à 0, à l’exception de ceux à 1 dans les deux nombres (c’est l’opération AND). Dans d’autres cas, nous pouvons souhaiter obtenir des bits à 1 partout où a ou b possède déjà un bit à 1 (c’est l’opération OR).

OU exclusif

a

b (OR)

a

a ^ b (XOR)

représentations binaires et décimales

représentations binaires et décimales

Vaut 1 si et valent 1, sinon 0

Vaut 1 si ou vaut 1, sinon 0

Vaut 1 si les bits sont différents, sinon 0

110 (6)

101 (5)

100 (4)

111 (7)

011 (3)

100111 (39)

010100 (20)

100 (4)

110111 (55)

110011 (51)

Challenge

Étant donné n entiers, votre tâche est de trouver 2 de ces entiers qui, après l’application de l’opération OR, donnent la plus grande valeur possible.

Entrée

La première ligne de l’entrée contient un entier n (1 ≤ n ≤ 1000).

La ligne suivante contient n entiers séparés par des espaces (1 ≤ ).

Sortie

Vous devez afficher la plus grande valeur obtenue en appliquant une opération OR sur 2 des valeurs fournies.

Exemples

Entrée

Sortie

5
1 2 3 4 5

7

Explication

On peut obtenir 7 en appliquant OR à :

  • 2 (010) et 5 (101) → 7 (111)

  • 3 (011) et 4 (100) → 7 (111)

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue