您的位置:首页 > 其它

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

2015-08-21 19:02 429 查看
题目描述

本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

输入描述:

输入在1行中依次给出A和B,中间以1空格分隔。

输出描述:

在1行中依次输出Q和R,中间以1空格分隔。

输入例子:

123456789050987654321 7

输出例子:

17636684150141093474 3

[code]#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] = '\0';

        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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: