大数除法(除数在int范围内)

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 1000
using namespace std;
void division(char bcs[],int cs,char res[]) //被除数为大数,除数为int范围内
{
    int i,k,len,t=0,s=0;
    bool flag=false;   //商是否有了第一个有效位,防止商首部一直出现0
    len=strlen(bcs);
    for(i=0,k=0; i<len; i++)
    {
        t=s*10+(bcs[i]-48);    //新余数
        if(t/cs>0||t==0)      //余数为0要修改商
        {
            res[k++]=t/cs+48;
            s=t%cs;
            flag=true;
        }
        else         //不够除,修改余数
        {
            s=t;
            if(flag)   //商已经有有效位了,补零
                res[k++]='0';
        }
    }
    for(i=0;i<k;i++)
        cout<<res[i];
    cout<<endl;
    cout<<s<<endl;
}
int main()
{
    char num[N],res[N];
    int n;
    scanf("%s%d",num,&n);
    division(num,n,res);
    return 0;
}

  

posted on 2015-05-11 21:54  JASONlee3  阅读(325)  评论(0编辑  收藏  举报

导航