


Divisez deux entiers sans utiliser les opérateurs de multiplication, de division et de modulo
Dans ce problème, il suffit de diviser deux entiers sans utiliser les opérateurs de multiplication, de division et de modulo. Bien que nous puissions utiliser des opérations d’addition, de multiplication ou de bits.
L'énoncé du problème indique que nous obtiendrons deux entiers x et y. Sans utiliser la multiplication, la division ou l'opérateur modulo, nous devons déterminer le quotient de x divisé par y.
Exemple
Entrée : x=15, y=5
Sortie : 3
Entrée : x=10, y=4
Sortie : 2
Entrée : x=-20, y=3
Sortie : -6
Méthode
Méthode 1 (utiliser des mathématiques simples)
Dans cette méthode, nous utiliserons un algorithme mathématique simple. Vous trouverez ci-dessous des instructions étape par étape sur ce que nous suivrons -
Nous continuerons à soustraire le diviseur (c'est-à-dire y) du dividende (c'est-à-dire x) jusqu'à ce que x soit supérieur ou égal à y.
Lorsque y est supérieur à x, c'est-à-dire que le diviseur est supérieur au dividende, le dividende devient le reste et le nombre de soustractions devient le quotient.
Stockez le nombre de fois que la soustraction est effectuée dans une variable et renvoyez-la, c'est notre résultat souhaité.
Exemple
Ce qui suit est l'implémentation C++ de l'algorithme &minnus;
#include <iostream> #include <bits/stdc++.h> using namespace std; long long division(long long a,long long b) // where a is dividend and b is divisor { long long sign=1; if((a<0) ^( b<0)) // - ^ - = +,+ ^ - = - , - ^ + = - , + ^ + = + { sign=-1; } long long m=abs(a); long long n=abs(b); long long count=0; // for storing the quotient while(m>=n){ m=m-n; count++; } if(sign==-1) // when sign is negative { count=-count; } return count; } int main(){ long long a=-21474; long long b=2; long long val=division(a,b); cout<<val<<endl; return 0; }
-10737
Copier après la connexion
-10737
Complexité temporelle : O(a/b)
Complexité spatiale : O(1)
Méthode 2 (en utilisant des opérations sur les bits)- Puisque n'importe quel nombre peut être représenté sous la forme de 0 ou de 1, le quotient peut être représenté sous forme binaire à l'aide de l'opérateur de décalage.
- Utilisez une boucle for pour parcourir les positions de bits du diviseur de 31 à 1.
- Trouvez le premier bit où le diviseur, c'est-à-dire b<<
- Lors de la vérification de la position suivante, ajoutez le résultat à la variable temp pour vous assurer que temp+(b<<
- Mettez à jour le quotient à chaque fois en calculant le quotient
OR 1<
< - Retournez au quotient après avoir mis à jour le symbole correspondant.
Ce qui suit est l'implémentation C++ de la méthode ci-dessus -
#include <iostream> #include <bits/stdc++.h> using namespace std; long long division(long long a,long long b) // where a is dividend and b is divisor { long long sign=1; if((a<0) ^( b<0)) // - ^ - = +,+ ^ - = - , - ^ + = - , + ^ + = + { sign=-1; } long long m=abs(a); long long n=abs(b); long long count=0; // for storing the quotient long long temp=0; for (int j = 31; j >= 0; --j){ if (temp + (n << j) <= m){ temp += n << j; count |= 1L << j; } } if(sign==-1) // when sign is negative { count=-count; } return count; } int main(){ long long a=49; long long b=5; long long val=division(a,b); cout<<val<<endl; a=-18,b=5; cout<<division(a,b); return 0; }
9
-3
Copier après la connexion
9 -3
Complexité temporelle : O(log(a))
Complexité spatiale : O(1), car il n'utilise aucun espace supplémentaire.
Méthode 3 (en utilisant la fonction logarithmique)Dans cette méthode, nous utiliserons une simple fonction logarithmique pour calculer le quotient.
Comme nous le savons tous,
$$mathrm{In(frac{a}{b}):=:In(a):-:In(b)}$$
peut être encore modifié en
$$mathrm{frac{a}{b}:=:e^{(In(a):-:In(b))}}$$
C'est donc l'idée de base pour résoudre le problème donné en utilisant cette méthode efficace.
Voici les instructions étape par étape pour la méthode que nous suivrons -
- Si l'un d'eux (c'est-à-dire le dividende ou le diviseur) est 0, nous renverrons 0.
- Maintenant, nous allons vérifier le symbole à l'aide de la fonction OU exclusif (XOR) pour stocker le symbole dans une variable.
- Si le diviseur est 1, le dividende est restitué directement.
- Maintenant, déclarez une variable et utilisez la fonction
exp et la fonction < 将等于 $mathrm{e^{(In(a):-:In(b))}}$ 的值存储在其中/b>log.
- Log et exp sont des fonctions intégrées en C++. La fonction log renvoie le logarithme népérien du nombre d'entrée et exp renvoie une valeur égale à e plus la valeur d'entrée.
Ce qui suit est l'implémentation C++ de la méthode ci-dessus -
#include <iostream> #include <bits/stdc++.h> using namespace std; long long int divide(long long int a,long long int b){ long long int sign=1; if(a==0||b==0) // when a is zero or b is zero { return 0; } if((a>0) ^ (b>0)) // - ^ - = +,+ ^ - = - , - ^ + = - , + ^ + = + { sign=-1; } if(b==1) // when b is 1 then it will return a example 51/1 = 51 { sign==-1?-a:a; return a; } long long int m=abs(a); long long int n=abs(b); //log function return the logarithmic value of the entered value with base e i.e. natural log of the entered value //exp function return the value equal to e^(entered value) long long int ans =exp(log(m) - log(n)) + 0.0000000001; // if it gives the value in decimal we will add from 0.0000000001 to account for accuracy errors if(sign==-1) // when sign is negative return the negative ans { return -ans; } return ans; } int main(){ long long int ans=divide(47,-9); cout<<ans<<endl; return 0; }
-5
Copier après la connexion
-5
Complexité temporelle : O(1), , car il faut un temps constant pour effectuer l'opération.
Complexité spatiale : O(1), car il n'utilise aucun espace supplémentaire.
ConclusionDans cet article, nous apprenons à diviser deux entiers sans utiliser d'opérateurs de multiplication, de division ou de modulo. Nous avons appris à résoudre les problèmes de différentes manières avec différentes efficacités. Ils utilisent des mathématiques simples, des opérations sur bits et des fonctions logarithmiques. Parmi elles, l’utilisation de la fonction logarithmique est la méthode la plus efficace car sa complexité temporelle est O(1), qui est la plus petite de toutes les méthodes.
J'espère que cet article vous a aidé à résoudre tous les concepts concernant ce sujet.
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)

Dans ce problème, il suffit de diviser deux entiers sans utiliser les opérateurs de multiplication, de division et de modulo. Bien que nous puissions utiliser des opérations d’addition, de multiplication ou de bits. L’énoncé du problème indique que nous obtiendrons deux entiers x et y. Sans utiliser la multiplication, la division ou l'opérateur modulo, nous devons déterminer le quotient de x divisé par y. Exemple d'entrée : x=15, y=5 Sortie : 3 Entrée : x=10, y=4 Sortie : 2 Entrée : x=-20, y=3 Sortie : -6 Méthode Méthode 1 (utiliser des mathématiques simples) ici Dans ce méthode, nous utiliserons un algorithme mathématique simple. Voici une explication étape par étape des étapes que nous suivrons : nous continuerons à soustraire le diviseur (c'est-à-dire y) du dividende (c'est-à-dire x) jusqu'à ce que x soit supérieur ou égal à y. quand y est supérieur à x

En tant que puissant système de gestion de bases de données relationnelles, la base de données Oracle fournit une multitude d'opérations informatiques pour répondre aux besoins des utilisateurs. Dans les opérations quotidiennes de base de données, l'opération de soustraction est une opération courante et importante. Elle peut nous aider à mettre en œuvre l'opération de soustraction des données pour obtenir les résultats dont nous avons besoin. Cet article discutera en détail des techniques liées aux opérations de soustraction dans la base de données Oracle et donnera des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et utiliser cette fonction. 1. Concepts de base des opérations de soustraction dans les données Oracle

L'opérateur de division (/) en PHP effectue une division en virgule flottante par défaut Si vous avez besoin d'obtenir le résultat entier du quotient, vous pouvez utiliser la méthode suivante : fonction floor() : arrondir l'entier (par exemple : floor( 10.5)=10) ceil() Fonction : arrondir un entier (par exemple : ceil(10.5)=11) Opérateur de troncature (//) : tronquer à un entier Opérateur modulo (%) : vérifier si le reste est 0 pour déterminer si le résultat est un entier

Excel est un logiciel de bureau indispensable dans notre bureau quotidien, donc pour certaines personnes qui apprennent Excel pour la première fois, elles rencontreront toujours quelques petits problèmes, comme comment faire des soustractions dans Excel. Aujourd'hui, je vais en parler à mes amis. Partagez ceci. Étape de fonctionnement. Les étapes de fonctionnement spécifiques sont ci-dessous. Amis, venez voir de plus près ! 1. Tout d'abord, ouvrez la feuille de données Excel. Excel souhaite effectuer une soustraction via des formules, et les formules sont généralement guidées par le signe égal, donc dans les cellules qui doivent être soustraites, entrez d'abord =, (comme indiqué en rouge ci-dessous) encerclé. partie illustrée). 2. Ensuite, cliquez sur la cellule où se trouve le menu et le nom de la cellule sera automatiquement ajouté à la formule (comme indiqué dans le cercle rouge dans la figure ci-dessous). 3

Compréhension approfondie des opérateurs Python : l'addition, la soustraction, la multiplication, la division et leur signification nécessitent des exemples de code spécifiques. Dans le langage de programmation Python, les opérateurs sont l'un des outils importants pour effectuer diverses opérations mathématiques. Parmi eux, l'addition, la soustraction, la multiplication et la division sont les opérateurs les plus courants. Cet article approfondira la signification de ces opérateurs et comment les utiliser en Python. Opérateur d'addition (+) L'opérateur d'addition est utilisé pour ajouter deux nombres et peut également être utilisé pour concaténer deux chaînes. x=5a=3résultat

1. L'espace d'opération d'embellissement de base des graphiques est petit et les éléments d'affichage interférents sont supprimés. Les éléments qui interfèrent avec les données incluent l'arrière-plan, les lignes de quadrillage et les légendes. Ils peuvent être supprimés, embellis et les ombres peuvent être adoucies. 2. Entrez le graphique [PPT], [Ouvrir], cliquez sur [Graphique], sélectionnez [+] et décochez-le [cocher], comme indiqué sur la figure. 3. [Clic droit] pour définir le format de la série de données, cliquez sur [Remplir] et cochez [Pas de remplissage]. Cliquez sur [Colonne de données], cliquez sur [Ombre] pour supprimer l'ombre, sélectionnez [Contour] et colorez [Texte] en blanc. 4. Cliquez sur [Échelle], sélectionnez [Marque d'échelle], ajustez [Type de thème] Aucun, [Couleur] blanc, comme indiqué sur la figure. 5. Supprimez les endroits qui doivent être supprimés pour rendre le tableau plus clair. N'ajoutez pas aveuglément des éléments lors de la conception, faites-le de manière appropriée.

Ici, nous verrons comment effectuer des additions et des soustractions matricielles à l'aide d'un environnement multithread. pthread est utilisé pour exécuter plusieurs threads simultanément en C ou C++. Il existe deux matrices A et B. L'ordre de chaque matrice est (mxn). Chaque fil obtiendra chaque ligne et effectuera une addition ou une soustraction. Donc, pour m lignes, il y a m threads différents. Exemple#include<iostream>#include<pthread.h>#include<cstdlib>#include<cstdint>#defineCORE3#defineMAX3usingnamespacestd;i

Pourquoi PHP8%-3 est-il égal à 0 ? En programmation PHP, nous rencontrons parfois des problèmes étranges et déroutants. Une question particulièrement intéressante est la suivante : pourquoi l’expression 8%-3 en PHP est-elle égale à 0 ? Pour répondre à cette question, nous devons d’abord comprendre le fonctionnement modulaire (opération restante) en PHP. L'arithmétique modulo est une opération mathématique utilisée pour calculer le reste après avoir divisé un nombre par un autre. En PHP, le signe pourcentage (%) est utilisé pour représenter l'arithmétique modulaire. En mathématiques, lorsqu’un nombre est divisé par un autre nombre et que le reste est 0, on dit que
