Олимпиады по информатике (ХМАО - Югра)

   
 
Югорский НИИ ИТ, Югорский ФМЛ
Логин:   Пароль:    
 
   
 
Новости
О проекте
Регистрация
Гостевая книга
Форум
Архив задач
Состояние системы
Олимпиады
Работа в системе
Рейтинг
Новичкам
Методическое пособие
Дистанционное обучение
Дистрибутивы
Ссылки

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 вы можете прочитать здесь.


[Все попытки] [Задача]


 
     
Югорский НИИ ИТ, Югорский ФМЛ