PAT乙级 | 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 <string>
using namespace std;

int main()
{
    
    
    string a,result;    //a是输入的被除数,result为商
    int b,r=0;  //r为余数(一开始余数为0)
    cin >>a>>b;
    for(int i=0;i<a.size();i++){
    
        //模拟除法
        r=(a[i]-'0')+r*10;  //和上一步的余数组合
        if(r<b) //不够除
            result.push_back('0');
        else{
    
       //够除
            result.push_back((r/b)+'0');
            r%=b;
        }
    }
    for(int i=0;result.size()-1>=1&&result[i]=='0';i++) //去除高位的0
        result.erase(result.begin());
    cout <<result<<" "<<r;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44888152/article/details/108641122