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

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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

注意边界情况,除数比被除数小的情况等

代码:

//

//  main.cpp

//  test

//

//  Created by XiaoPeng on 17/2/23.

//  Copyright © 2017 XiaoPeng. All rights reserved.

//

#include <iostream>

#include <queue>

#include <iomanip>

#include <math.h>

#include <vector>

#include <string>

#include <algorithm>

using namespace std;

int main(int argc, const char * argv[]) {

    queue<int> line;

    queue<int> final;

    char A[2000] = {0};

    int b;

    cin>>A;

    cin>>b;

    for(int i = 0 ; A[i]!=‘\0’ ;i++)

    {

        

        char temp[2] = {0};

        temp[0]=A[i];

        line.push(atoi(temp));

    }

    int f = 0;

    

    int x = line.front();

    line.pop();

    if(line.empty())

    {

        f = x;

        

    }else

    {

        

    while(!line.empty())

    {

        int y = line.front();

        line.pop();

        int z = 10*x+y;

        x = z%b;

        final.push(z/b);

    }

        f = x;

    }

    if(!final.empty())

    {

    while(!final.empty())

    {

        cout<<final.front();

        final.pop();

    }

    }

    else{

        cout<<0;

    }

    cout<<” “<<f;

}

发表评论