Le pinceau Luogu remet en question le langage C++ | P5727 Conjecture de grêle

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

Je suppose que tu aimes

Origine blog.csdn.net/guolianggsta/article/details/132645902
conseillé
Classement