English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Produit et C des nombres grands ++Programme

Donné un grand nombre, par exemple num, un autre grand nombre, alors m. La tâche est d'utiliser l'opérateur de division pour imprimer le quotient, et l'opérateur de module pour imprimer le reste d'un grand nombre.

La sortie devrait être Remainder = xxx; Quotient = yyy

Supposons que nous ayons une entrée num = la chaîne de caractères num =" 14598499948265358486", et d'autres entrées m = 487, le reste est430, le quotient est29976385930729688".

Exemple

Entrée : num ="214755974562154868"
   m = 17
Sortie : Reste = 15
   quotient = 12632704386009109
Entrée : num ="214"
   m = 5
Sortie : Reste = 4
   Quotient = 42

Nous utiliserons pour résoudre le problème donné-

  • Initialiser mod à 0.

  • À partir de la droite, nous devons utiliser mod pour le trouver : mod = (mod * 10 + digit) % m.

  • Par quo [i] = mod / m cherche le quotient, où i est le numéro de position du quotient.

Algorithme

Début
   Étape 1 -> Déclarer long long ll
   Étape 2 -> Dans la fonction void quotientremainder(string num, ll m)
      Déclarer un vector<int> vec
      Définir ll mod = 0
      Boucle pour i = 0 et i < num.size() et i++
         Définir digit = num[i] - '0'
         Définir mod = mod * 10 + digit
         Définir quo = mod / m
         Appeler vec.push_back(quo)
         Définir mod = mod % m
      Fin de la boucle
      Imprimer la valeur restante qui est dans mod
      Définir zeroflag = 0
      Boucle pour i = 0 et i < vec.size() et i++
         Si vec[i] == 0 et zeroflag == 0 alors,
            Continuer
         Fin de l'if
         zeroflag = 1
         Afficher la valeur de vec[i]
      Fin de la boucle for
      Retour
   Étape 3 -> Dans la fonction int main() Declare and assign num = "14598499948265358486"
      Déclarer et assigner ll m = 487
      Appeler la fonction quotientremainder(num, m)
Arrêt

Exemple

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//Fonction de calcul du module
void quotientremainder(string num, ll m) {
   //Stocke le module de grand nombre
   vector<int> vec;
   ll mod = 0;
   //Division progressive
   for (int i = 0; i < num.size(); i++) {
      int digit = num[i] - "0";
      //Mettre à jour le module
      //Nombre actuel.
      mod = mod * 10 + digit;
      //Mettre à jour le quotient
      int quo = mod / m;
      vec.push_back(quo);
      //Mettre à jour mod pour la prochaine itération.
      mod = mod % m;
   }
   cout << "\nRest : " << mod << "\n";
   cout << "Quotient : ";
   //Drapeau utilisé pour supprimer les zéros initiaux
   bool zeroflag = 0;
   for (int i = 0; i < vec.size(); i++) {
      if (vec[i] == 0 && zeroflag == 0)
         continue;
      zeroflag = 1;
      cout << vec[i];
   }
   return;
}
//Bloc principal
int main() {
   string num = "14598499948265358486";
   ll m = 487;
   quotientremainder(num, m);
   return 0;
}

Résultat de sortie

Rest : 430
Quotient : 29976385930729688