Apprenez le C++ dès un bébé ! Enregistrez les questions dans le processus d'apprentissage et de préparation aux tests de Luogu C++, et enregistrez chaque instant.
Vous trouverez ci-joint un article récapitulatif : Luogu Brush Questions Langage C++ | Résumé
【Description】
Étant donné un entier positif n , l'opération suivante a été effectuée sur ce nombre : si le nombre est impair, alors multipliez-le par 3 et ajoutez 1, sinon divisez par 2. Après plusieurs cycles, il finira par revenir à 1. Il a été vérifié que de très grands nombres (7×10^11) peuvent être comparés à 1 de cette manière, c'est ce qu'on appelle « conjecture de grêle ». Par exemple, lorsque n vaut 20, le processus de changement est 20→10→5→16→8→4→2→1.
En fonction du nombre donné, vérifiez cette conjecture et affichez toute la séquence de changement dans l'ordre inverse en commençant par le dernier 1.
【entrer】
Entrez un entier positif n .
【Sortir】
Affiche un certain nombre d'entiers positifs séparés par des espaces, représentant la séquence de changements dans l'ordre inverse à partir du dernier 1.
【Exemple de saisie】
20
【Exemple de sortie】
1 2 4 8 16 5 10 20
【Explication du code】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, a[5000], mark=1;
cin >> n;
a[mark] = n;
mark++;
while (n!=1) {
if (n%2==0) n /= 2;
else n = n * 3 + 1;
a[mark] = n;
mark++;
}
for (int i=mark-1; i>=1; i--) {
cout << a[i] << " ";
}
return 0;
}
【résultat de l'opération】
20
1 2 4 8 16 5 10 20