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

Программа на C ++ для работы с делителями и большими числами

Дана большая цифра, например, 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
Основной учебник
Вам может понравиться