Étant donné une variable entière Nombre en entrée. Considérons un tableau contenant des éléments compris entre 1 et Number dans l'ordre trié. Si nous effectuons une opération sur un tableau, les éléments aux positions impaires seront supprimés à chaque étape. Le but est alors d’effectuer cette opération N Le nombre de fois jusqu'à ce qu'il ne reste qu'un seul élément. Imprimez l'élément à la fin.
REMARQUE - : Les éléments sont positionnés de manière à ce que le tableau à l'index 0 soit à la position 1, et ainsi de suite.
Numéro d'entrée=1, sortie=1
Numéro d'entrée=2, sortie=2
Numéro d'entrée=3, sortie=2
>Numéro d'entrée=4, sortie= 4
Quantité d'entrée = 5, sortie = 4
Quantité d'entrée = 6, sortie = 4
Quantité d'entrée = 7, sortie = 4
......
Quantité d'entrée = 12, sortie = 8
Numéro d'entrée = 20, Sortie = 16
Sur la base de l'observation ci-dessus, pour la plage de nombres comprise entre 2i et 2i+1-1, la sortie sera 2i .
Entrée −Nombre=7
Sortie − Les éléments après une seule opération de réduction sont : 4
Explication − Le premier élément est en position 1, et ainsi de suite.
Le tableau sera [ 1 2 3 4 5 6 7 ]
Après la première opération : [ 2 4 6 ]
Après la deuxième opération : [ 4 ]
Entrez − nombre = 18
Sortie − L'élément unique après l'opération de réduction est : 4
Explication − Le premier élément est en position 1 et le
tableau sera [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18]
Après la première opération : [ 2 4 6 8 10 12 14 16 18]
Après la 2ème opération : [ 2 8 12 16 ]
Après la 3ème opération : [ 8 16 ]
Après 4 opérations [ 16 ]
Dans cette méthode, nous utiliserons une boucle while pour calculer le résultat final en fonction de la formule ci-dessus. En commençant par une valeur initiale de 2, répétez jusqu'à ce que 2*résultat
Obtenir la variable d'entrée Number
La fonction getsingleElement(long num) obtient le numéro d'entrée et imprime le résultat selon la formule ci-dessus.
Obtenez des résultats variables.
Initialisez le résultat avec 2.
Utilisez une boucle while pour parcourir jusqu'à ce que le résultat*2 li>
doublera les résultats à l'intérieur.
Une fois la boucle while terminée, nous obtenons la valeur souhaitée.
Retour des résultats.
Imprimez les résultats en principal.
#include<bits/stdc++.h> using namespace std; long getsingleElement(long num){ long result; result=2; while(result*2 <= num){ result=result*2; } return result; } int main(){ int Number = 20; cout<<"The single element after reduction operation is : "<<getsingleElement(Number) ; return 0; }
Si nous exécutons le code ci-dessus, il générera la sortie suivante
The single element after reduction operation is : 16
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!