Le pistolet de Nick Fury

Recherche du fonctionnement périodique

Le pistolet de Nick Fury émet des impulsions successives dont l'intensité varie selon une loi mathématique.

Pour calculer l'intensité de l'impulsion suivante, il suffit d'écrire en binaire l'intensité de l'impulsion émise, de renverser l'écriture de ce nombre binaire (lire de droite à gauche), puis d'ajouter 2.

Sur le pistolet, on peut régler l'intensité de l'impulsion initiale.

Par exemple, si le pistolet est réglé sur 39, alors, lors d'un tir, les impulsions émises auront pour intensité :

  • 39 --> 100111 --> 111001 --> 57 --> 59
  • 59 --> 111011 --> 110111 --> 55 --> 57
  • 57 --> 111001 --> 100111 --> 39 --> 41
  • 41 --> 101001 --> 100101 --> 37 --> 39
  • 39 --> ...

On constate que pour le réglage 39, les amplitudes sont périodiques, et les valeurs 39, 59, 57, 41 se répètent indéfiniment. Pour le réglage 39, la période est donc 4.

Voici un autre exemple, obtenu avec une impulsion initiale de 86 :

  • 86 --> 55 --> 61 --> 49 --> 37 --> 43 --> 55...

Bien qu'on ne retourne jamais à la valeur 86, on obtient aussi un cycle, de longueur 5.

En revanche, pour certaines valeurs, l'amplitude n'est pas périodique, et le comportement du pistolet est imprévisible. Si Nick le règle sur une telle valeur, le pistolet peut exploser dès qu'il a changé plus de 1024 fois d'intensité.

Afin d'améliorer l'arme de Nick Fury et ainsi rendre service au Shield, il convient de ne permettre que les réglages des valeurs de départ qui donnent lieu à un comportement périodique.

Pour relever ce défi, vous devez donner la séquence de toutes les valeurs convenables comprises entre 1 et 500 c'est-à-dire celles qui donnent lieu à un comportement périodique.

Ce problème est tiré de c0d1ng UP 2016

Type de retour

une séquence de nombres entiers

Entrée du problème

Pas de donnée d'entrée

Formulaire de réponse

Vous devez être connecté pour pouvoir répondre aux défis

Tags : cup16 arithmétique