A除以B

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

*这个题,我的思路就是模拟自己算除法的过程,,,因为好像没有什么整数的数据类型能放下1000位的整数

#include <iostream>
#include <bits/stdc++.h>

using namespace std;

int main()
{
    char a[1009];
    int b;
    cin>>a>>b;
    int len = strlen(a);
    int temp = 0,y = 0;            //temp保存商,y保存余数
    if(len == 1)                  //当被除数只有一位的时候,直接输出商和余数
    {
        temp = (a[0] - '0')/b;
        y = a[0] - '0' - temp*b;

        cout<<temp;
        if(len == 1)
            cout<<" "<<y;
    }
    else
    {
        for(int i = 0; i < len; i++)
        {
            if(i ==0 )
                y = a[i] - '0';
            else
                y = y * 10 + a[i] - '0';    //高位整除后余下的余数要乘以10
            if(i == 0 && y < b)          //首位的零不用输出
                continue;
            temp = y / b;
            cout<<temp;
            y = y - temp * b;

        }
        cout<<" "<<y;
    }


    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_40014462/article/details/81604482