PAT(Basic Level) 1017 A除以B (20)

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

项目 要求
时间限制 100 ms
内存限制 65536 kB
代码长度限制 8000 B
判题程序 Standard
作者 CHEN, Yue

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

输入格式

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

输出格式

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

输入样例

123456789050987654321 7

输出样例

17636684150141093474 3

代码实现

C语言

#include <stdio.h>
#include <string.h>


int main() {
    char A[1000];
    int B, quotient, remainder, tmp = 0;

    scanf("%s %d", A, &B);

    for (int i = 0; i < strlen(A); i++) {
        if ( tmp ) {
            tmp = tmp * 10 + (A[i] - '0');
            quotient = tmp / B;
            remainder = tmp % B;
            printf("%d", quotient);
            tmp = remainder;
        } else {
            int t = A[i] - '0';
            quotient = t / B;
            remainder = t % B;
            if ( i==0 && strlen(A)>1 && quotient==0 ) {
                // 如果第一位是 0,不输出
            } else {
                printf("%d", quotient);
            }
            tmp = remainder;
        }
    }
    printf(" %d", tmp);
    return 0;
}

Python

A, B = input().split()
quotient = int(A) // int(B)
remainder = int(A) % int(B)
print(quotient, remainder)