English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Дана большая цифра, например, num, и другая большая цифра, m. Задача - использовать деление для печати делителя, использовать модуль для печати остатка от деления большой цифры.
Результат должен быть Remainder = xxx; Делимое = yyy
Предположим, что у нас есть вход num = строка num = " 14598499948265358486", а другие входы m = 487, то оставшаяся часть составляет 430, а делитель равен 29976385930729688.
Вход: num = "214755974562154868" m = 17 Вывод: Оставшаяся часть = 15 делитель = 12632704386009109 Вход: num = "214" m = 5 Вывод: Оставшаяся часть = 4 Делитель = 42
Метод, который мы будем использовать для решения данной проблемы-
Сначала установите mod = 0.
С правой стороны,我们必须 использовать mod, чтобы найти его: mod = (mod * 10 + digit) % m.
Найдите делитель qua [i] = mod / m, где i - это номер позиции делителя.
Начало Шаг 1 -> Укажите long long ll Шаг 2 -> В функции void quotientremainder(string num, ll m) Укажите вектор<int> vec Установите ll mod = 0 Перемещение For i = 0 и i < num.size() и i++ Установите digit = num[i] - '0' Установите mod = mod * 10 + digit Установите quo = mod / m Вызов vec.push_back(quo) Установите mod = mod % m Конец цикла Выведите значение оставшейся части, которое находится в mod Установите zeroflag = 0 Перемещение For i = 0 и i < vec.size() и i++ Если vec[i] == 0 && zeroflag == 0, то Продолжить Конец If zeroflag = 1 выведите значение vec[i] Конец For Возврат Шаг 3 -> В функции int main() Укажите и присвойте num = "14598499948265358486" Определить и присвоить ll m = 487 Вызов функции quotientremainder(num, m) Стоп
#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 << "\nОстаток: " << mod << "\n"; cout << "Коэффициент: "; //Флаг для удаления начальных нулей 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; }
Результат вывода
Остаток: 430 Коэффициент: 29976385930729688