美文网首页
【PAT乙级C++】1017. A除以B (18/20)

【PAT乙级C++】1017. A除以B (18/20)

作者: linghugoogle | 来源:发表于2018-01-18 17:56 被阅读74次

    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
    

    代码

    #include<iostream>
    #include<string>
    using namespace std;
    int main() {
        int a[1002], b,c[1001];
        int i, j, n;
        string s;
        cin >> s >> b;
        //0既不是正整数也不是负整数
        //将字符串转为数组
        n = s.size();
        for (i = 0;i < n;++i) {
            a[i] = (int)s[i] - '0';
        }
        //除法
        j = 0;
        for (i = 0;i < n;++i) {
            //被除数大
            if (j*10+a[i] >= b) {
                cout << (j * 10 + a[i])/ b;
                j = (j * 10 + a[i]) % b;
            }
            //被除数小
            else {
                //如果不是第一个数字,输出0
                if (i != 0) {
                    cout << "0";
                }
                j = j * 10 + a[i];
            }
        }
        cout << " " << j;
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:【PAT乙级C++】1017. A除以B (18/20)

          本文链接:https://www.haomeiwen.com/subject/rtgwoxtx.html