大数除法

除法步骤:

    上一步的余数乘以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; }