PAT (Basic Level) Practice (中文) 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

作者: CHEN, Yue

单位: 浙江大学

时间限制: 100 ms

内存限制: 64 MB

思路:

      大数模拟除法。

 

#include <iostream>
#include <string>
using namespace std;
int main() {
    string num;
    int n = 0, sum = 0;
    cin >> num >> n;
    for (int i = 0; i < num.size(); i++) {
        if (sum == 0 &&  (num[i] -'0') < n && i != num.size() - 1) {
            if (i != 0)
                cout << '0';
            sum +=  (num[i]- '0') * 10;
            i++;
            sum +=   num[i]  -'0';
        }
        else {
            sum *= 10;
            sum += num[i]  -'0';
        }
        cout << sum / n;
        sum %= n;
    }
    cout << ' '<< sum << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/94557462