Algorithm Gossip (16) 超长整数运算(大数运算)
发布时间:2020-12-14 03:15:03 所属栏目:大数据 来源:网络整理
导读:前言 This Series aritcles are all based on the book 《经典算法大全》; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行实现; 目的是熟悉常用算法过程中的技巧和逻辑拓展。 提出问题 16.Algorithm Gossip: 超长整数运算(大数运算) 分析和
前言
提出问题16.Algorithm Gossip: 超长整数运算(大数运算) 分析和解释代码void add(int *a,int *b,int *c) {
int i,carry = 0;
for(i = N - 1; i >= 0; i--) {
c[i] = a[i] + b[i] + carry;
if(c[i] < 10000)
carry = 0;
else { // jinwei
c[i] = c[i] - 10000;
carry = 1;
}
}
}
void sub(int *a,int *b,int *c) {
int i,borrow = 0;
for(i = N - 1; i >= 0; i--) {
c[i] = a[i] - b[i] - borrow;
if(c[i] >= 0)
borrow = 0;
else { // jiewei
c[i] = c[i] + 10000;
borrow = 1;
}
}
}
void mul(int *a,int b,int *c) { // b is x
int i,tmp,carry = 0;
for(i = N - 1; i >=0;i--) {
tmp = a[i] * b + carry;
c[i] = tmp % 10000;
carry = tmp / 10000;
}
}
void div(int *a,int *c) {
int i,remain = 0;
for(i = 0; i < N;i++) {
tmp = a[i] + remain;
c[i] = tmp / b;
remain = (tmp % b) * 10000;
}
}
拓展和关联
后记参考书籍
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |