正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 提高 2017 第一轮真题 › 第 27 题
NOIP 提高 2017 第一轮 第 27 题:完善程序(大整数除法)第 1 空
题目
(大整数除法)给定两个正整数 $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号