加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PAT 1007 A除以B (大数相除)

发布时间:2020-12-14 02:23:53 所属栏目:大数据 来源:网络整理
导读:题目描述 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。 输入描述: 输入在1行中依次给出A和B,中间以1空格分隔。 输出描述: 在1行中依次输出Q和R,中间以1空格分隔。 输入例子: 1234567890

题目描述
本题要求计算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 <math.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int main()
{
    char szStr[1000] = {0};
    char szChushu[10] = {0};
    int nData = 0;
    int nLenth = 0;

    int nYushu = 0;
    int nShang = 0;

    int p1 = 0;
    int number = 0;

    /* 输入数据 */
    cin >> szStr >> nData;

    /* 获得字符串的长度 */
    nLenth = strlen(szStr);
    /* 求解,思路是6位一个单位区除 */
    while(1)
    {
        szChushu[0] = nYushu + 0x30;
        strncpy(szChushu+1,szStr+p1,1);
        szChushu[2] = '';

        number = atoi(szChushu);
        nShang = number / nData;
        nYushu = number % nData;

        /* 当商的第一位是0时,不输出 */
        if(p1 != 0 || nShang != 0)
        {
            cout << nShang;
        }

        /* 指针后移 */
        p1++;
        if(p1 >= nLenth)
        {
            break;
        }

    }

    /* 输出余数 */
    cout << " " << nYushu << endl;

    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读