美文网首页
PAT-B 1017. A除以B (20)

PAT-B 1017. A除以B (20)

作者: Rush的博客 | 来源:发表于2016-09-19 13:47 被阅读903次

    传送门

    https://www.patest.cn/contests/pat-b-practise/1017

    题目

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
    输入格式:
    输入在1行中依次给出A和B,中间以1空格分隔。
    输出格式:
    在1行中依次输出Q和R,中间以1空格分隔。
    输入样例:
    123456789050987654321 7
    输出样例:
    17636684150141093474 3

    分析

    这道题就是编写程序模拟除法的笔算方法,输出时要考虑第1位是0的情况,因为除数只有1位,所以,只要考虑商的第1位是0的情况即可。

    源代码

    //C/C++实现
    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    
    int main()
    {
        char a[1000];
        int b;
        scanf("%s %d", a, &b);
        char quotient[1000]; //商
        int rest = 0; //余数
        for(int i = 0; i != strlen(a); i++){
            quotient[i] = ((rest * 10 + a[i] - 48) / b) + 48;
            rest = (rest * 10 + (a[i] - 48)) % b;
        }
        if(quotient[0] == '0' && quotient[1] != 0){
            printf("%s", quotient + 1);
        }
        else{
            printf("%s", quotient);
        }
        printf(" %d\n", rest);
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:PAT-B 1017. A除以B (20)

          本文链接:https://www.haomeiwen.com/subject/abqnettx.html