首页 > 其他 > 详细

PAT 乙级真题 1007.A除以B

时间:2020-01-17 14:15:31      阅读:74      评论:0      收藏:0      [点我收藏+]

PAT 乙级真题 1007.A除以B

题目描述

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

输入格式

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

输出格式

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

输入样例

123456789050987654321 7

输出样例

17636684150141093474 3

题目思路

采用按位进行除法,余数进位的方式进行计算。
例如:
367 / 2
先计算 3 / 2 = 1 余 1
再计算 被除数加上余数进位过来的数进行计算
也就是 (6+1*10) / 2 = 8 余 0
再计算 (7+0*10) / 2 = 3 余 1
最后除出来的结果就是依次算式的得数 1 8 3
余数就是最后的余数 1
最后输出结果为:183 1

解题代码如下:

#include<iostream>
using namespace std;

const int N = 1e3 + 10;

int main()
{
    char a[N];
    int c[N];
    int b, d = 0, i = 0;
    scanf("%s%d", a, &b);
    do {
        c[i] = ((a[i] - 48)+d*10) / b;
        d = ((a[i] - 48)+d*10) % b;
        i++;
    } while (a[i] >= '0'&&a[i] <= '9');
    if (c[0] != 0)
        for (int j = 0; j < i; j++)
        {
            printf("%d", c[j]);
        }
    else
        for (int j = 1; j < i; j++)
        {
            printf("%d", c[j]);
        }
    printf(" %d", d);
    return 0;
}

PAT 乙级真题 1007.A除以B

原文:https://www.cnblogs.com/fsh001/p/12205360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!