English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Data un numero molto grande, ad esempio num, un altro numero molto grande, m. L'obiettivo è utilizzare l'operazione di divisione per stampare il quoziente, e utilizzare il modulo per stampare il resto di un numero grande.
L'output dovrebbe essere Remainder = xxx; Quoziente = yyy
Supponiamo di avere un input num = stringa num = " 14598499948265358486", mentre altri input m = 487, allora il residuo è 430 e il quoziente è 29976385930729688.
Input: num = "214755974562154868" m = 17 Output: Residuo = 15 quotient = 12632704386009109 Input: num = "214" m = 5 Output: Residuo = 4 Quoziente = 42
Il metodo che useremo per risolvere il problema dato-
Inizialmente impostare mod = 0.
Dalla destra, dobbiamo utilizzare mod per trovarlo: mod = (mod * 10 + digit) % m.
Trova il quoziente con quo[i] = mod / m, dove i è il numero di posizione del quoziente.
Inizia Passo 1 -> Dichiarare long long ll Passo 2 -> Nella funzione void quotientremainder(string num, ll m) Dichiarare un vettore int vec Imposta ll mod = 0 Ciclo For i = 0 e i < num.size() e i++ Imposta digit = num[i] - '0' Imposta mod = mod * 10 + digit Imposta quo = mod / m Chiamata vec.push_back(quo) Imposta mod = mod % m Fine ciclo Stampa il valore residuo che è in mod Imposta zeroflag = 0 Ciclo For i = 0 e i < vec.size() e i++ Se vec[i] == 0 e zeroflag == 0 allora, Continua Fine If zeroflag = 1 Stampa il valore di vec[i] Fine For Ritorna Passo 3 -> Nella funzione int main() Dichiarare ed assegnare num = "14598499948265358486" Declare and assign ll m = 487 Call function quotientremainder(num, m) Stop
#include <bits/stdc++.h> using namespace std; typedef long long ll; //计算模量的功能 void quotientremainder(string num, ll m) { //存储大数模 vector<int> vec; ll mod = 0; //进行逐步划分 for (int i = 0; i < num.size(); i++) { int digit = num[i] - '0'; //更新模 //当前数字。 mod = mod * 10 + digit; //更新商 int quo = mod / m; vec.push_back(quo); //更新mod以进行下一次迭代。 mod = mod % m; } cout << "\nRemainder: " << mod << "\n"; cout << "Quotient: "; //用于删除起始零的标志 bool zeroflag = 0; for (int i = 0; i < vec.size(); i++) { if (vec[i] == 0 && zeroflag == 0) continue; zeroflag = 1; cout << vec[i]; } return; } //主块 int main() { string num = "14598499948265358486"; ll m = 487; quotientremainder(num, m); return 0; }
输出结果
Remainder: 430 Quotient: 29976385930729688