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