PAT乙级1017.A除以B(20 分)

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

两种方法:
方法一:节省存储空间,采用边计算边输出结果的形式,不过要考虑什么时候开始输出,在代码形式上稍微复杂一些
方法二:将计算的结果存储起来,最后一并输出,占用的存储空间较多,但代码逻辑上较为清晰
这里采用方法二
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
int main()
{
    string A;
    int B;
    int temp = 0;
    string Q = "";
    cin >> A >> B;
    int flag = 0;
    for (int i = 0; i < A.length(); i++)
    {
        Q = Q + to_string((temp * 10 + A[i] - '0') / B);
        temp = (temp * 10 + A[i] - '0') % B;
    }
    int j;
    for (j = 0; j < Q.length() - 1; j++)
    {
        if (Q[j] != '0')
            break;
    }
    cout << Q.substr(j, Q.length() - j + 1) << " " << temp << endl;
    system("pause");
    return 0;
}

 

 
posted @ 2018-08-19 21:32  hui666  阅读(460)  评论(0编辑  收藏  举报