Table des matières
Comment résoudre
Méthode simple
Approche efficace
Exemple
Sortie
Description du code ci-dessus
Conclusion
Maison développement back-end C++ Requête XOR pour le diviseur impair maximum dans la plage en C++

Requête XOR pour le diviseur impair maximum dans la plage en C++

Aug 27, 2023 pm 08:25 PM
c nombre impair XOR

Requête XOR pour le diviseur impair maximum dans la plage en C++

Étant donné un tableau contenant N entiers et des requêtes de plage Q. Pour chaque requête, nous devons renvoyer le XOR du plus grand diviseur impair de chaque nombre de la plage.

Le plus grand diviseur impair est le plus grand nombre impair pouvant diviser le nombre N, tel que . Par exemple, le plus grand diviseur impair de 6 est 3.

Input: nums[ ] = { 3, 6, 7, 10 }, query[ ] = { { 0, 2 }, { 1, 3 } }
Output:
query1: 7
query2: 1

Explanation: greatest odd divisors of nums array are { 3, 3, 7, 5 }.
For query 1 we need to find the XOR of indexes 0, 1, and 2 which is 7, and for query2 we need to find XOR of indexes 1, 2, and 3 which is 1.
Copier après la connexion

Comment résoudre

Méthode simple

Tout d'abord, dans la méthode simple, nous devons trouver le plus grand diviseur impair de tous les éléments du tableau. Ensuite, en fonction de la plage de la requête, nous devons calculer le XOR de chaque élément de la plage et le renvoyer.

Approche efficace

Un moyen efficace de résoudre ce problème consiste à créer un tableau de préfixes XOR prefix_XOR[] contenant le tableau avec le plus grand diviseur impair, au lieu d'effectuer un XOR sur chaque nombre de la plage à chaque fois et de renvoyer prefix_XOR[R ] - prefix_XOR [L-1].

Le tableau Prefix XOR est un tableau où chaque élément contient le XOR de tous les éléments précédents.

Exemple

#include <bits/stdc++.h>
using namespace std;
int main(){
    int nums[] = { 3, 6, 7, 10 };
    int n = sizeof(nums) / sizeof(nums[0]);
    int prefix_XOR[n];
    // creating an array
    // containing Greatest odd divisor of each element.
    for (int i = 0; i < n; i++) {
        while (nums[i] % 2 != 1)
            nums[i] /= 2;
        prefix_XOR[i] = nums[i];
    }
    // changing prefix_XOR array to prefix xor array.
    for (int i = 1; i < n; i++)
        prefix_XOR[i] = prefix_XOR[i - 1] ^ prefix_XOR[i];
    // query array to find result of these queries.
    int query[2][2] = {{0, 2},{1, 3}};
    int q = sizeof(query) / sizeof(query[0]);
    // finding results of queries.
    for(int i = 0;i<q;i++){
        if (query[i][0] == 0)
            cout<<  prefix_XOR[query[i][1]] << endl;
        else{
            int result = prefix_XOR[query[0][1]] ^ prefix_XOR[query[i][0] - 1];
            cout <<  result << endl;
        }
    }
    return 0;
}
Copier après la connexion

Sortie

7
4
Copier après la connexion

Description du code ci-dessus

  • Créez un tableau préfixe_XOR pour stocker le plus grand diviseur impair de chaque élément, puis remplacez ce tableau par un tableau préfixe XOR.

  • Le plus grand diviseur impair est calculé en le divisant par deux jusqu'à ce que modulo 2 vous obteniez 1.

  • Créez un tableau XOR de préfixe en parcourant le tableau et en effectuant un XOR au niveau du bit de l'élément actuel avec l'élément précédent.

  • Le résultat de la requête est calculé en soustrayant l'index droit du tableau prefix_XOR[] (gauche - 1) L'index du tableau prefix_XOR[].

Conclusion

Dans ce didacticiel, nous avons discuté d'un problème dans lequel nous devons trouver le plus grand diviseur impair pour chaque nombre dans la plage d'un tableau donné à l'aide de XOR. Nous avons discuté d'un moyen de résoudre ce problème en trouvant le plus grand diviseur impair pour chaque élément et en utilisant un tableau de préfixes XOR. Nous avons également discuté d'un programme C++ pour ce problème et nous pouvons le faire en utilisant des langages de programmation comme C, Java, Python, etc. Nous espérons que cet article vous a été utile.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que sont les constantes en langage C ? Pouvez-vous donner un exemple ? Que sont les constantes en langage C ? Pouvez-vous donner un exemple ? Aug 28, 2023 pm 10:45 PM

Une constante est aussi appelée variable et une fois définie, sa valeur ne change pas lors de l'exécution du programme. Par conséquent, nous pouvons déclarer une variable comme une constante faisant référence à une valeur fixe. On l'appelle aussi texte. Les constantes doivent être définies à l'aide du mot-clé Const. Syntaxe La syntaxe des constantes utilisées dans le langage de programmation C est la suivante - consttypeVariableName; (ou) consttype*VariableName; Différents types de constantes Les différents types de constantes utilisées dans le langage de programmation C sont les suivants : Constantes entières - Par exemple : 1,0 ,34, 4567 Constantes à virgule flottante - Exemple : 0.0, 156.89, 23.456 Constantes octales et hexadécimales - Exemple : Hex : 0x2a, 0xaa.. Octal

VSCode et VS C++ IntelliSense ne fonctionnent pas ou ne récupèrent pas les bibliothèques VSCode et VS C++ IntelliSense ne fonctionnent pas ou ne récupèrent pas les bibliothèques Feb 29, 2024 pm 01:28 PM

VS Code et Visual Studio C++ IntelliSense peuvent ne pas être en mesure de récupérer les bibliothèques, en particulier lorsque vous travaillez sur de grands projets. Lorsque nous survolons #Include&lt;wx/wx.h&gt;, nous voyons le message d'erreur "CannotOpen source file 'string.h'" (dépend de "wx/wx.h") et parfois, la fonction de saisie semi-automatique ne répond pas. Dans cet article, nous verrons ce que vous pouvez faire si VSCode et VSC++ IntelliSense ne fonctionnent pas ou n'extraient pas de bibliothèques. Pourquoi mon Intellisense ne fonctionne-t-il pas en C++ ? Lorsque vous travaillez avec des fichiers volumineux, IntelliSense parfois

Correction du code d'erreur Xbox 8C230002 Correction du code d'erreur Xbox 8C230002 Feb 27, 2024 pm 03:55 PM

Vous ne parvenez pas à acheter ou à regarder du contenu sur votre Xbox en raison du code d'erreur 8C230002 ? Certains utilisateurs continuent de recevoir cette erreur lorsqu'ils tentent d'acheter ou de regarder du contenu sur leur console. Désolé, il y a un problème avec le service Xbox. Réessayez plus tard. Pour obtenir de l'aide sur ce problème, visitez www.xbox.com/errorhelp. Code d'état : 8C230002 Ce code d'erreur est généralement provoqué par des problèmes temporaires de serveur ou de réseau. Cependant, il peut y avoir d'autres raisons, telles que les paramètres de confidentialité de votre compte ou le contrôle parental, qui peuvent vous empêcher d'acheter ou de visualiser un contenu spécifique. Correction du code d'erreur Xbox 8C230002 Si vous recevez le code d'erreur 8C lorsque vous essayez de regarder ou d'acheter du contenu sur votre console Xbox

Programme récursif pour trouver les éléments minimum et maximum d'un tableau en C++ Programme récursif pour trouver les éléments minimum et maximum d'un tableau en C++ Aug 31, 2023 pm 07:37 PM

Nous prenons le tableau d'entiers Arr[] en entrée. Le but est de trouver les éléments les plus grands et les plus petits d’un tableau en utilisant une méthode récursive. Puisque nous utilisons la récursion, nous allons parcourir l'ensemble du tableau jusqu'à ce que nous atteignions length = 1, puis retourner A[0], qui constitue le cas de base. Sinon, l'élément actuel est comparé à la valeur minimale ou maximale actuelle et sa valeur est mise à jour de manière récursive pour les éléments suivants. Examinons différents scénarios d'entrée et de sortie pour cela −Input −Arr={12,67,99,76,32}; Output −Valeur maximale dans le tableau : 99 Explication &mi ;

China Eastern Airlines annonce que l'avion de passagers C919 sera bientôt mis en service China Eastern Airlines annonce que l'avion de passagers C919 sera bientôt mis en service May 28, 2023 pm 11:43 PM

Selon les informations du 25 mai, China Eastern Airlines a dévoilé les derniers progrès réalisés sur l'avion de passagers C919 lors de la réunion d'information sur les performances. Selon l'entreprise, le contrat d'achat du C919 signé avec COMAC est officiellement entré en vigueur en mars 2021 et le premier avion C919 a été livré fin 2022. Il est prévu que l’avion soit officiellement mis en service prochainement. China Eastern Airlines utilisera Shanghai comme base principale pour les opérations commerciales du C919 et prévoit d'introduire un total de cinq avions de passagers C919 en 2022 et 2023. La société a déclaré que les futurs plans d'introduction seront déterminés en fonction des conditions d'exploitation réelles et de la planification du réseau de routes. Selon la compréhension de l'éditeur, le C919 est la nouvelle génération chinoise d'avions de passagers monocouloirs avec des droits de propriété intellectuelle totalement indépendants dans le monde et il est conforme aux normes de navigabilité acceptées au niveau international. Devrait

Programme C++ pour imprimer un motif en spirale de nombres Programme C++ pour imprimer un motif en spirale de nombres Sep 05, 2023 pm 06:25 PM

L’affichage des nombres dans différents formats est l’un des problèmes de codage fondamentaux de l’apprentissage. Différents concepts de codage comme les instructions conditionnelles et les instructions de boucle. Il existe différents programmes dans lesquels nous utilisons des caractères spéciaux comme des astérisques pour imprimer des triangles ou des carrés. Dans cet article, nous imprimerons les nombres sous forme de spirale, tout comme les carrés en C++. Nous prenons le nombre de lignes n comme entrée, et commençons par le coin supérieur gauche et nous déplaçons vers la droite, puis vers le bas, puis vers la gauche, puis vers le haut, puis encore vers la droite, et ainsi de suite. Motif en spirale avec chiffres 123456724252627282982340414243309223948494431102138474645321120373635343312191817161514

La fonction du mot clé void en langage C La fonction du mot clé void en langage C Feb 19, 2024 pm 11:33 PM

void en C est un mot-clé spécial utilisé pour représenter un type vide, ce qui signifie des données sans type spécifique. En langage C, void est généralement utilisé dans les trois aspects suivants. Le type de retour de la fonction est void. En langage C, les fonctions peuvent avoir différents types de retour, tels que int, float, char, etc. Cependant, si la fonction ne renvoie aucune valeur, le type de retour peut être défini sur void. Cela signifie qu'une fois la fonction exécutée, elle ne renvoie pas de valeur spécifique. Par exemple : voidhelloWorld()

Pour la première fois en 23 ans, C# remporte le prix du langage de programmation de l'année TIOBE 2023 Pour la première fois en 23 ans, C# remporte le prix du langage de programmation de l'année TIOBE 2023 Jan 11, 2024 pm 04:45 PM

Selon le TIOBE Programming Community Index, l'une des références permettant de mesurer la popularité des langages de programmation, il est évalué en collectant des données auprès d'ingénieurs, de cours, de fournisseurs et de moteurs de recherche du monde entier. L'indice TIOBE de janvier 2024 a été publié récemment et le classement officiel des langages de programmation pour 2023 a été annoncé. C# a remporté le prix TIOBE 2023 du langage de programmation de l'année. C'est la première fois que C# remporte cet honneur en 23 ans. Le communiqué de presse officiel de TIOBE indique que C# figure dans le top 10 depuis plus de 20 ans. Il rattrape désormais les quatre langages majeurs et est devenu le langage de programmation avec la plus forte croissance en un an (+1,43%). C'est bien mérité de remporter ce prix. En deuxième position, on retrouve Scratch (+0,83%) et Fortran (+0).

See all articles