丝路贸易账本中可能出现非常大的金额数据,普通整数类型无法保存,需要使用高精度算法处理。两个大数以字符串形式输入并存储在 s1、s2 中,然后需要转换为整数存入整型数组 a、b 中,然后进行计算,并将计算结果存入整型数组 c 中。以下关于高精度乘法的说法正确的有?
需要将两个字符串倒序存储在整型数组中,例如将 s1 倒序存入数组 a:
int lena = s1.length();
for (int i=0;
i<=lena-1; i++) { a[i] = s1[lena-1-i] - '0'; }
处理数组 c 进位时下面代码能获得正确结果:
for (int i=0; i<=lenc-1; i++) {
c[i+1] = c[i+1] + c[i]/10;
c[i] = c[i]%10;
}
下面代码能去掉数组 c 的前导零,得到正确的 lenc,已知 lenc 指的是数组 c 的当前长度:
while(c[lenc-1]==0 && lenc>1)
lenc--;
模拟乘法时,下面代码能使数组 c 保仔止调计算结果:
for (int i=0; i<=lena-1; i++)
for (int j=0; j<=lenb-1; j++)
c[i+j] = a[i] * b[j];