1017 A除以B (20 分)

高精除低精板子题。

const int N=1010;
struct bignum
{
    int m[N];
    int len;
    bignum()
    {
        memset(m,0,sizeof m);
        len=0;
    }
};
int r;

bignum Div(bignum a,int b)
{
    bignum c;
    c.len=a.len;
    for(int i=c.len-1;i>=0;i--)
    {
        r=r*10+a.m[i];
        c.m[i]=r/b;
        r%=b;
    }
    while(c.len > 1 && !c.m[c.len-1]) c.len--;
    return c;
}

int main()
{
    string s;
    int b;
    cin>>s>>b;

    bignum a;
    a.len=s.size();
    for(int i=0;i<s.size();i++)
        a.m[i]=s[s.size()-1-i]-'0';

    bignum c=Div(a,b);

    for(int i=c.len-1;i>=0;i--)
        cout<<c.m[i];
    cout<<' '<<r<<endl;
    //system("pause");
    return 0;
}
posted @ 2021-02-21 23:08  Dazzling!  阅读(33)  评论(0编辑  收藏  举报