实用代码如下:
void multiply(int a[],int b) //大数乘法(万进制)
{
int array=0;
for(int i=99;i>=0;i--) //在这里面a[99]相当于个位 {
// b 从99到0 依次 * a[i]
array += b*a[i];
a[i] = array%10000;
array /= 10000;
}
}
void divide(int a[],int b) //大数除法(万进制)
{
int div=0;
for(int i=0;i<100;i++)
{
div =div * 10000 + a[i];
a[i] = div/b;
div%=b;
}
}
以下面的例子为准:
107924372*15=1618865580。
①上面的乘法如果运用10进制,很简单。直接按照我们原先学的算就可以了。
②万进制呢?
首先存数:a[0]=4372,a[1]=792,a[2]=1。107924372,从低位到
高位每四位存到一个数组元素中。此时,总位数为3。
接着运算:a[0]*15=65580,所以进位为a[0]/10000=6
,a[0]=a[0]%10000=5580。a[1]*15=11880,a[1]=a[1]+6=11886。
进位为1,a[1]=1886。a[2]*15=15,a[2]=a[2]+1=16,进位为0。
输出:a[2],a[1],a[0]即为1618865580。要注意的是:如果a[2]=886,
那么该如何输出?直接输出:168865580。显然不对,
正确的是16088655880。输出的原则是:最高位原样输出,其它位如果小
于1000,则高位补0,一位一补。