Сайт о программировании, математике и моделировании
Программа возведения в квадрат длинного числа
За операцию возведения в квадрат методом «треугольника» отвечает процедура SquareTri./ Вычисление квадрата длинного числа С = А2 методом «треугольника»
void SquareTri(
DIGIT C[ ], /* результат длины 2n цифр */
const DIGIT A[ ], /* основание длины n цифр */
int n) /* длина основания */
{
TWODIGIT t,f;
int i,j;
Zero (С, 2*n);
for (i=0; i<n; i++)
{ f=0;
for (j=0; j<n; j++)
{ t = (TWODIGIT)A[i]*(TWODIGIT)A[j];
f += (((TWODIGIT)LODIGIT(t))«1)+C[i+j];
C[i+j] = LODIGIT(f);
f= HIDIGIT(f);
f+= (((TWODIGlT)HIDIGIT(t))«1);
}
t = (TWODIGIT)A[i|*(TWODIGIT)A[i];
f += LODIGIT(t)+C[i+i];
C[i+i] = LODIGIT(i);
f = HIDIGIT(f)+C[i+i+1]+HIDIGIT(t);
C|i+i+1]= LODIGIT(f);
C[i+i+2] = HIDIGIT(f);
}
}
Сложность этого алгоритма O(n2).
Print article | This entry was posted by root on 03.12.2010 at 8:20 пп, and is filed under Задачи и решения. Follow any responses to this post through RSS 2.0. Вы можете оставить комментарий или трэкбэк с вашего сайта. |