mpAdd 多倍長整数同士の加算
void mpAdd(int *ret, int *a, int *b);
ret (出力)多倍長整数同士の加算の結果(a + b) a, b (入力)多倍長整数
なし
#define N 10000
void mpAdd(int *ret, int *a, int *b)
{
int i;
int lr, la, lb;
int *rr;
int x;
la = *a;
lb = *b;
lr = (la >= lb) ? la : lb;
rr = ret;
x = 0;
for (i = 1; i <= lr; i++) {
if (i <= la) x += *++a;
if (i <= lb) x += *++b;
if (x < N) {
*++rr = x;
x = 0;
} else {
*++rr = x - N;
x = 1;
}
}
*++rr = x;
*ret = lr + x;
}