Maison > développement back-end > C++ > Comment calculer correctement le modulo des nombres négatifs ?

Comment calculer correctement le modulo des nombres négatifs ?

Mary-Kate Olsen
Libérer: 2025-01-13 13:31:42
original
285 Les gens l'ont consulté

How Do We Correctly Calculate the Modulo of Negative Numbers?

Nombres modulo négatifs : un problème difficile

Pour les nombres positifs, il est simple de calculer le reste de la division d'un entier par un autre. Cependant, l'opérateur modulo standard (%) peut conduire à des résultats inattendus lorsque des nombres négatifs sont impliqués. En effet, l'opérateur modulo renvoie le reste après division et pour les opérandes négatifs, le résultat est également négatif.

Pour surmonter ce problème et déterminer correctement le module des nombres négatifs, nous devons adapter notre approche. Une solution courante consiste à créer une fonction modulaire personnalisée pour garantir que les résultats se situent toujours dans la plage souhaitée.

Ce qui suit est une implémentation de fonction modulaire qui gère avec précision les entrées positives et négatives :

<code class="language-c++">int mod(int x, int m) {
    int r = x % m;
    return r < 0 ? r + m : r;
}</code>
Copier après la connexion

Dans cette fonction, nous obtenons d'abord le reste de la division en utilisant l'opérateur modulo standard. Si le reste est négatif, une valeur modulo est ajoutée pour le convertir en plage positive. Sinon, nous renvoyons le reste tel quel.

En utilisant cette fonction modulo modifiée, nous pouvons déterminer correctement la position de l'index dans le tableau, que l'entrée soit un entier positif ou négatif. Par exemple :

GetArrayIndex(4, 3) == 1 GetArrayIndex(3, 3) == 0 GetArrayIndex(2, 3) == 2 GetArrayIndex(1, 3) == 1 GetArrayIndex(0, 3) == 0 GetArrayIndex(-1, 3) == 2 GetArrayIndex(-2, 3) == 1 GetArrayIndex(-3, 3) == 0 GetArrayIndex(-4, 3) == 2

Avec cette approche, nous pouvons parcourir efficacement le tableau en utilisant des indices qui gèrent correctement les nombres positifs et négatifs.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal