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

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

HotLog


 

Снова A+B

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

Сложение двух длинных чисел выполняется с использованием тех же принципов, что и при поразрядном сложении вручную на листе бумаги. Считаем сначала числа в массивы a и b, после чего осуществим сложение таким образом, что результат суммы запишется в массив a. В переменной с будем хранить перенос на следующий разряд.

В простейшем случае решение поставленной задачи представимо следующим алгоритмом:

  const maxsize=102;
  int a[maxsize], b[maxsize];
  
  readlong(a);
  readlong(b);

  m=max(a[0],b[0]);

  c=0;
  for i=1..m{
    c = c+a[i]+b[i];
    a[i] = c mod 10;
    c = c div 10;
  }
  if(c>0){
    m=m+1;
    a[m] = c;
  }
  a[0]=m;

  writelong(a);

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


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


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