我是靠谱客的博主 畅快花卷,最近开发中收集的这篇文章主要介绍1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

因为A是不超1000位的正整数,所以不好用整型数据存储,所以A用字符数组来存储每一位数,这就要用除法的原理一步步来求商 ,下面用1234/7来解释

1234/7每一位商数Q余数P
(第一位数:1)1/7

0(第一位商数为0时,说明

第一位数不够被除,不输出)

1
p*10+(下一位数:2)=1*10+2,12/715
p*10+(下一位数:3)=5*10+3,53/774
p*10+(下一位数:4)=4*10+4,44/762
所以1234/7=176余2

下面代码实现: 

#include<stdio.h>
#include<string.h>
int main()
{
    char A[1001] = { 0 };
    int B, Q, R, len, i, temp;
    scanf("%s %d",A,&B);
    len = strlen(A);
    temp = A[0] - '0';
    for (i = 0;i < len;i++)
    {
        Q = temp / B;
        R = temp % B;
        temp = R * 10 + (A[i + 1] - '0');    //余数*10+下一位的数
        if (i == 0 && len == 1 && Q == 0)   //当A只有一位数且商为0时
            printf("%d", Q);
        else  if (i == 0 && Q == 0) //当第一位商数是0时不进行输出
            continue;
        else
            printf("%d", Q); //打印每一位商数
    }
    printf(" %d", R);
    return 0;
}

最后

以上就是畅快花卷为你收集整理的1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R的全部内容,希望文章能够帮你解决1017 A除以B 计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部