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

Koeffizient und C der großen Zahl ++Programm

Geben Sie eine sehr große Zahl, z.B. num, eine andere sehr große Zahl, z.B. m. Die Aufgabe ist es, den Quotienten durch Division zu drucken und den Rest einer großen Zahl durch Modulo zu drucken.

Die Ausgabe sollte Remainder = xxx; Quotient = yyy sein

Angenommen, wir haben eine Eingabe num = Zeichenkette num =" 14598499948265358486", während andere Eingaben m = 487, dann ist der Rest430, der Quotient ist29976385930729688".

Beispiel

Eingabe: num ="214755974562154868"
   m = 17
Ausgabe: Rest = 15
   Quotient = 12632704386009109
Eingabe: num ="214"
   m = 5
Ausgabe: Rest = 4
   Quotient = 42

Die Methode, die wir verwenden werden, um das gegebene Problem zu lösen-

  • Setze mod zunächst auf 0.

  • Von rechts beginnend, müssen wir mod verwenden, um es zu finden: mod = (mod * 10 + Ziffer) % m.

  • Durch quo[i] = mod / m sucht den Quotienten, wobei i die Positionsnummer des Quotienten ist.

Algorithmus

Starte
   Schritt 1 -> Erkläre long long ll
   Schritt 2 -> In der Funktion void quotientremainder(string num, ll m)
      Erkläre einen Vector<int> vec
      Setze ll mod = 0
      Schleife für i = 0 und i < num.size() und i++
         Setze Ziffer = num[i] - '0'
         Setze mod = mod * 10 + Ziffer
         Setze quo = mod / m
         Rufe vec.push_back(quo) auf
         Setze mod = mod % m
      Schleife beenden
      Drucke den Restwert, der in mod enthalten ist
      Setze zeroflag = 0
      Schleife für i = 0 und i < vec.size() und i++
         Wenn vec[i] == 0 und zeroflag == 0 dann,
            Fortsetzen
         Ende If
         zeroflag = 1
         Den Wert von vec[i] ausgeben
      Ende For
      Rückkehr
   Schritt 3 -> In der Funktion int main() Declare and assign num = "14598499948265358486"
      ll m deklarieren und zuweisen = 487
      Funktion quotientremainder(num, m) aufrufen
Stop

Beispiel

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//Funktion zur Berechnung des Modulus
void quotientremainder(string num, ll m) {
   //Speichert den großen Modulus
   vector<int> vec;
   ll mod = 0;
   //Führe die stufenweise Division durch
   for (int i = 0; i < num.size(); i++) {
      int digit = num[i] - "0";
      //Aktualisiere den Modulus.
      //Aktuelle Zahl.
      mod = mod * 10 + digit;
      //Aktualisiere den Quotienten.
      int quo = mod / m;
      vec.push_back(quo);
      //Aktualisiere mod für den nächsten Durchlauf.
      mod = mod % m;
   }
   cout << "\nRest : " << mod << "\n";
   cout << "Quotient : ";
   //Zeichen, um führende Nullen zu löschen, zu kennzeichnen
   bool zeroflag = 0;
   for (int i = 0; i < vec.size(); i++) {
      if (vec[i] == 0 && zeroflag == 0)
         continue;
      zeroflag = 1;
      cout << vec[i];
   }
   return;
}
//Hauptblock
int main() {
   string num = "14598499948265358486";
   ll m = 487;
   quotientremainder(num, m);
   return 0;
}

Ausgabewert

Rest : 430
Quotient : 29976385930729688