Les prisonniers – Qualification 2008

Niveau 3

Énoncé

Dans une mise en scène imaginaire, réalisée pour les seuls besoins de l'exercice, les N gardes du couloir de N cellules d'une prison dans lesquelles sont enfermés N prisonniers se livrent à un jeu étrange avant de partir le soir. Chacun, tour à tour, va changer l'état des portes de certaines cellules : s'il trouve une porte ouverte, il la ferme, et réciproquement s'il trouve une porte fermée, il l'ouvre. Le premier garde change l'état de toutes les portes, le deuxième change l'état d'une porte sur deux (c'est-à-dire des portes 2, 4, 6, 8...), le troisième une porte sur trois (3, 6, 9...). Ce processus se répète jusqu'au dernier garde. Écrivez une fonction qui prend en argument le nombre de gardes (et donc de cellules et de prisonniers) N et un numéro de prisonnier P, et qui renvoie 1 s'il pourra s'échapper le lendemain, 0 sinon.

Contraintes

1 <= N <= 1000000000 où N est le nombre de gardes (qui est égal au nombre de prisonniers).

Entrée

Deux entiers, séparés par un espace :

  • N, le nombre de gardes (qui est égal au nombre de prisonniers)
  • P, le numéro du prisonner considéré. 1 <= P <= N

Sortie

Un entier :

  • 0 si le prisonnier reste enfermé
  • 1 si le prisonnier peut sortir

Contraintes d'exécution

Utilisation mémoire maximum
1000 kilo-octets
Temps d'exécution maximum
1000 millisecondes

Exemples d'entrée/sortie

Exemple d'entrée
10 1
Exemple de sortie
1
Exemple d'entrée
100 36
Exemple de sortie
1