B.1017 A除以B (20)

Posted yaxadu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了B.1017 A除以B (20)相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
struct bign {
    int d[1010], len;
    bign() {
        memset(d, 0, sizeof(d));
        len = 0;
    }
};

bign change(char str[]) {
    bign a;
    a.len = strlen(str);
    for (int i = 0; i < a.len; i++) {
        a.d[i] = str[a.len - i - 1] - 0;   // 不要忘记字符变成数字啊啊啊啊啊啊
    }
    return a;
}

bign divide(bign a, int b, int &r) {
    bign c;
    c.len = a.len;
    for (int i = a.len - 1; i >= 0; --i) {
        r = a.d[i] + r * 10;       //不要忘记将余数扩大十倍
        if (r < b) c.d[i] = 0;
        else {
            c.d[i] = r / b;
            r = r % b;
        }
    }
    while (c.len > 1 && c.d[c.len - 1] == 0) {   //注意c.len > 1 而不是 >= 1(PAT有被除数为’0‘的测试点但是牛客网没有)
        c.len--;
    }
    return c;
}

int main() {
    char str[1010];
    int b, r = 0;
    scanf("%s %d", str, &b);
    bign a = change(str);
    bign c = divide(a, b, r);
    for (int i = c.len - 1; i >= 0; i--) {
        printf("%d", c.d[i]);
    }
    printf(" %d
", r);
}

 

以上是关于B.1017 A除以B (20)的主要内容,如果未能解决你的问题,请参考以下文章

PAT乙级 1017. A除以B (20)

A除以B (20)

1017. A除以B (20)

1017. A除以B (20)(此题转载)

1017. A除以B (20)

1017. A除以B (20)