PAT乙级测试题1017(C语言实现)

1017 A除以B (20分)

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R
成立。 输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。 输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

PAT乙级测试题1017(C语言实现)_第1张图片

/*
 *思路:从首位开始,用上一次得到的余数+本位数/除数得到本位的商并输出
 * 余数为最后一次运算得到的余数
 * 特殊情况:当strlen(A)>1,i=0,Q=0时不输出
 */
#include 
#include 

int main(){
    char A[1001];
    int B,Q,R=0;
    scanf("%s %d", &A,&B);
    for (int i = 0; A[i]!='\0'; ++i) {
        Q = ( 10 * R + A[i] - '0') / B;
        if (!(strlen(A)>1 && Q==0 &&i==0))
            printf("%d", Q);
        R = ( 10 * R + A[i] - '0') % B;
    }
    printf(" %d", R);
    return 0;
}

你可能感兴趣的:(pta)