Grau més gran de Collatz

La conjetura de Collatz diu que qualsevol nombre natural més gran que 0 sempre acabarà convertint-se en 1 seguint les següents regles: si és parell, es divideix entre 2. En cas de ser senar es multiplica per 3 i s’hi suma 1. Quan s’arriba a 1, entra en un bucle 1 - 2 - 4 - 1 ...

Si anomenem com a ’grau’ el nombre de cops que operem el número, feu un programa que llegeixi una sèrie de números, la transformi en una cua i mitjançant una funció anomenada ’mayorcollatz’, calculi quin número té el mayor ordre i quin és aquest ordre. Podeu utilitzar una altra funció anomenada ’collatz’ per calcular l’ordre de cada número. En cas d’empat, la sortida serà el nombre més gran.

Implementeu dins del vostre programa, llavors, les funcions següents:

  // Pre: Una cua de números més grans que 1.
  // Post: Escriu el número d'ordre de Collatz més gran i l'ordre del mateix.
  // void mayor_collatz (queue <int> cua) {
  // }
  
  // Pre: Un enter iniciat a 0 que serà el comptador de l'ordre i un número major que 1.
  // Post: Retorna l'ordre de Collatz del propi número.
  // int collatz (int i, int contador) {
  // }

Entrada

L’entrada del programa és una seqüencia de naturals majors o iguals que 1 que heu de convertir a una cua:

1 4 9 7 5

Sortida

La sortida ha d’indicar quin es el nombre d’ordre més alt i quin és el seu ordre seguint la següent estructura:

El numero que més cops opera és 9 amb 19 cops.

En cas d’empat, la sortida serà el nombre més gran.

Informació del problema

Autoria: Marti Velasco Molas &amp; Jordi Moreno López

Generació: 2026-01-25T15:26:08.068Z

© Jutge.org, 2006–2026.
https://jutge.org