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.
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; }
Sortie
7 4
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

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

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<wx/wx.h>, 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

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

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 ;

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

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

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()

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).
