B1017 A除以B (20分)

/*
题意:
1、高精度除法
A是不超过1000的整数,B是一位数,所以你需要输出商和余数R

解题:
1、结构体
2、逆着赋值
3、打印大整数
4、除法实现

learn && wrong:
1、memset函数在cstring和iostream都有
2、记不住呀divide,整整有8个模块

*/

#include 
#include 
using namespace std;

//结构体 
struct bign {
    int d[1001];
    int len;
    bign(){
        memset(d,0,sizeof(d));
        len = 0;
    }
}; 

//转换成bign 
bign change(char str[]){
    bign c;
    c.len = strlen(str);
    for(int i = 0;i < c.len;++i){
        c.d[i] = str[c.len - i - 1] - '0';
    } 
    
    return c;
} 

//打印函数 
void print(bign a){
    for(int i = a.len - 1;i >= 0;--i){
        cout<= 0;--i){
        r = r  * 10 + a.d[i];
        if(r < b)   c.d[i] = 0;
        else{
            c.d[i] = r / b;
            r = r % b ;
        }
    }
    
    while(c.len - 1 >= 1 && c.d[c.len - 1] == 0){
        c.len--;
    }
    return c;
}

int main(int argc, char** argv) {
    char str[1001];
    int b;
    cin>>str>>b;
    int r = 0;
    bign a = change(str);   //转为大整数 
    bign c = divide(a,b,r); //除法 
    print(c); 
    cout<<" "<

你可能感兴趣的:(B1017 A除以B (20分))