mpSub 多倍長整数同士の減算
void mpSub(int *ret, int *a, int *b);
ret (出力)多倍長整数同士の減算の結果(a - b) a, b (入力)多倍長整数(a は b よりも大きいか等しい)
なし
#define N 10000 void mpSub(int *ret, int *a, int *b) { int i; int la, lb; int *rr; int x; la = *a; lb = *b; rr = ret; x = 0; for (i = 1; i <= la; i++) { x += *++a; if (i <= lb) x -= *++b; if (x >= 0) { *++rr = x; x = 0; } else { *++rr = x + N; x = -1; } } while (--i > 0) if (*rr-- != 0) break; *ret = i; }