Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

A div B

(Время: 1 сек. Память: 16 Мб Сложность: 40%)

Рассмотрим процесс деления длинного числа на короткое. Будем руководствоваться теми же принципами, что и при делении "в столбик". Будем в некоторой переменной хранить текущее значение, по которому будет определяться последующая цифра результата, которая получается из целочисленного деления текущего значения на делитель. Далее вычисляем следующее текущее значение как (x mod b)*10+r, где x-старое текущее значение, b - последняя вычисленная цифра, а r - следующая цифра делимого. Процесс продолжается до последней цифры длинного числа.

Алгоритм, реализующий данную задачу может быть записан в следующем виде:

  const maxsize=101;
  int a[maxsize], b;

  readlong(a);
  read(b);
  
  x=0; k=0;
  for i=a[0]..1{
    x = x*10+a[i];
    if(x < b and k=0 and i > 1) continue;
    k=1;
    write(x div b);
    x = x mod b;
  }

Информацию о представлении длинных чисел и реализацию функции readlong вы можете прочитать здесь.


[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2018, ICQ: 151483, E-mail: admin@acmp.ru