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