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

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

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

完善程序 · 高精度计算 · 答案 p[0]

题目

(大整数除法)给定两个正整数 $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;
}

本小题

第 1 空应填( )

答案

p[0]

题解

考点定位

本题(完善程序「大整数除法」第①空)考「首位余数」,对应大纲 3.1 高精度除法(难度【4】)。

程序思路:rest 逐位下放:rest=rest×10+p[i],商位 rest/q,余 rest%q。

解题过程

①处首位余数:

``cpp rest = p[0]; ``

答案:p[0]。

易错提醒

① 高位起处理:先吃下最高位;② 后续 rest=rest×10+p[i] 逐位下放。

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