Contents
  1. 1. 输入格式:
  2. 2. 输出格式:
  3. 3. 输入样例:
  4. 4. 输出样例:

1017 A除以B (20 分)

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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

分析:把前面的A用字符串输入,然后仿照除法的运算过程:

1.先用div存储A的第一个数字除以B后的结果,mod存储它的余数,当A只有一位或者A不知一位但是得到的余数不为0的时候,直接输出div(也就是结果Q的第一位)。

2.进行len-1(len是A的长度)次循环(因为第一步处理已经处理了一位)。在每一步,当前被除数x = mod ×10 + 当前循环得到的数字,除数为B,则当前输出的结果为div = x / B,当前的余数为mod 为 x % B。

3.输出最后的余数。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
string A;
int len,div,mod,B;
cin >> A >> B;
len = A.size();
div = (A[0] - '0') / B;
mod = (A[0] - '0') % B;
if ( (div!=0&&len >1) || len == 1)
cout << div;
for (int i=1;i<len;i++)
{
div = (A[i] - '0' + mod*10) / B;
cout << div ;
mod = (A[i] - '0' + mod*10) % B;
}
cout << " " << mod ;
return 0;
}
Contents
  1. 1. 输入格式:
  2. 2. 输出格式:
  3. 3. 输入样例:
  4. 4. 输出样例: