pat乙1017 A除以B 大整数除int

#include<iostream>
#include<cstring>
using namespace std;
int r;//全局变量余数
struct bign{//大整数结构体
        int d[1000];
        int len;
        bign(){
            memset(d,0,sizeof(d));
            len=0;
        }
    };
bign change(char str[])//str数组转bign类型,将低位放在前面便于运算
    {
        bign a;
        a.len=strlen(str);
        for(int i=0;i<a.len;i++)
        {
            a.d[i]=str[a.len-i-1]-'0';
            //cout<<a.d[i]<<endl;
        }
        return a;
    }
    bign div(bign a,int b)//大整数除int函数
    {
        bign c;
        c.len=a.len;//设商位数与被除数相同
        for(int i=a.len-1;i>=0;i--)//高位开始除
        {
            r=r*10+a.d[i];
            if(r>=b)//够除则除
            {
                c.d[i]=r/b;
                r=r%b;
            }
            else//不够除商对应位置0
            {
                c.d[i]=0;
            }
        }
        while(c.len-1>=1&&c.d[c.len-1]==0)//将商的高位为0的位去除,且保留至少一位
        {
            c.len--;
        }
        return c;
    }
void print(bign a)//输出大整数
{
    for(int i=a.len-1;i>=0;i--)
    {

        cout<<a.d[i];
    }
    cout<<" ";
}
int main(){


    char str[1000];
    int b;
    cin>>str>>b;
    bign a=change(str);
    bign c=div(a,b);
  //  cout<<strlen(str)<<endl<<str<<endl;
    //cout<<a.len<<endl;
    //print(a);
    print(c);
    cout<<r;
    return 0;
}

第一个大整数类型的题,虽然是大整数除int,但至少是个开始,感觉难度还可以接受,继续加油

发布了22 篇原创文章 · 获赞 0 · 访问量 265

猜你喜欢

转载自blog.csdn.net/chang_sheng1/article/details/104073014