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