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

输入格式:

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

输出格式:

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

输入样例:

123456789050987654321 7

输出样例:

17636684150141093474 3

思路:

大数除法:将大数的第一位取出来,做除后取商,如果仅一位,直接输出商,后面如果不能除尽,则将余数*10+下一位,否则输出。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//大数除法 
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
string a;
int q,b,r;
cin>>a>>b;
int len=a.length();
//获取第一个数的商和余数
q=(a[0]-'0')/b;
r=(a[0]-'0')%b;
//分情况
if((q!=0 && len>1) || len==1)
cout<<q;
for(int i=1;i<len;i++){
q=(r*10+a[i]-'0')/b;
cout<<q;
r=(r*10+a[i]-'0')%b;
}
cout<<" "<<r;
return 0;
}