正在载入在线练习界面,本页内容可直接阅读…

AK CSP › NOIP 提高 2017 第一轮真题 › 第 30 题

NOIP 提高 2017 第一轮 第 30 题:完善程序(大整数除法)第 4 空

完善程序 · 高精度计算 · 答案 rest%q*10+p[i]

题目

(大整数除法)给定两个正整数 $p$ 和 $q$,其中 $p$ 不超过 $10^{100}$, $q$ 不超过 $100000$, 求 $p$ 除以 $q$ 的商和余数。

(第一空 $2$ 分,其余 $3$ 分) 输入:第一行是 $p$ 的位数 $n$,第二行是正整数 $p$,第三行是正整数 $q$。 输出:两行,分别是 $p$ 除以 $q$ 的商和余数。

#include <iostream>
using namespace std;
int p[100];
int n, i, q, rest;
char c;
int main()
{
    cin >> n;
    for (i = 0;
         i < n; i++)
    {
        cin >> c;
        p[i] = c - '0';
    }
    cin >> q;
    rest = (1);
    i = 1;
    while ((2) && i < n)
    {
        rest = rest * 10 + p[i];
        i++;
    }
    if (rest < q)
        cout << 0 << endl;
    else
    {
        cout << (3);
        while (i < n)
        {
            rest = (4);
            i++;
            cout << rest / q;
        }
        cout << endl;
    }
    cout << (5) << endl;
    return 0;
}

本小题

第 4 空应填( )

答案

rest%q*10+p[i]

题解

考点定位

本题(大整数除法第④空)考「余数下放」,对应大纲 3.1 高精度(难度【3】)。

解题过程

④处余数乘 10 下放新位:

``cpp rest = rest % q * 10 + p[i]; ``

答案:**rest%q*10+p[i]**。

易错提醒

① 先取余(上一轮的商位已输出)再乘 10 加新位;② 运算顺序:% → ×10 → +。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号