大数除法

来源:互联网 发布:linux tmp目录作用 编辑:程序博客网 时间:2024/05/28 05:18

大数除法

除法步骤:

    上一步的余数乘以10加上该步的位,得到该步临时的被除数,将其与除数比较:如果不够除,则该位的商为0;如果够除,则商就是对应的商,余数就是对应的余数。最后一步要注意最后高位可能有多余的0,要去除他们,但也要保证结果至少有一位数。
//高精度除法,r为余数bign div(bign a,int b,int& r) {    bign c;    //被除数的每一位和商的每一位都是一一对应的,因此    //先令长度相等      c.len=a.len;    //从高位开始     for( int i=a.len-1;i>=0;i-- )    {        //和上一位遗留的余数组合         r=r*10 + a.d[i];        if(r<b)        {            //不够除,该位为0             c.d[i]=0;        }        else        {            //够除            //商             c.d[i] =r/b;            //获得新的余数             r=r%b;         }    }    //除去高位的多余的0    while( c.len-1 >= 1&& c.d[c.len-1]==0 )     {        c.len--;    }    return c;}