大数运算-PAT乙级 B1017.A除以B

来源:互联网 发布:淘宝女装店铺简介 编辑:程序博客网 时间:2024/05/16 14:04

计算A/B,其中A是不超过1000位的正整数,B是1位正整数
输出商数Q和余数R,使得A = B * Q + R成立

/* PAT-B1017.A乘以B */#include<cstdio>#include<cstring>#include<iostream>#define maxSize 10000#define ascii_0 48using namespace std;int main() {    int a[maxSize],b[maxSize];    int n, s, remain = 0, flag = 0;    int len;    string str;    memset(a, 0, sizeof(a));//初始化    memset(b, 0, sizeof(b));    cin >> str >> n;    len = str.size();    for (int i = 0; i < len; i++)//转为数字 数组表示        a[i] = str[i] - ascii_0;    //从高到低,依次相除;记录每一位相减所余,作为下一位相减时的十位    for (int k = 0; k < len; k++) {        b[k] = (remain * 10 + a[k]) / n; //保留商值        remain = (remain * 10 + a[k]) % n;  //保留每一位减后的余数    }    for (int i = 0; i < len; i++) {//倒序输出        if (b[i] == 0 && flag == 0)//前导零不输出            continue;        flag = 1;        cout << b[i];    }    if (flag == 0) cout << 0;//warning:商只有0的情况,eg:2/7    cout << " " << remain << endl;     return 0;}
0 0