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
*这个题,我的思路就是模拟自己算除法的过程,,,因为好像没有什么整数的数据类型能放下1000位的整数
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[1009];
int b;
cin>>a>>b;
int len = strlen(a);
int temp = 0,y = 0; //temp保存商,y保存余数
if(len == 1) //当被除数只有一位的时候,直接输出商和余数
{
temp = (a[0] - '0')/b;
y = a[0] - '0' - temp*b;
cout<<temp;
if(len == 1)
cout<<" "<<y;
}
else
{
for(int i = 0; i < len; i++)
{
if(i ==0 )
y = a[i] - '0';
else
y = y * 10 + a[i] - '0'; //高位整除后余下的余数要乘以10
if(i == 0 && y < b) //首位的零不用输出
continue;
temp = y / b;
cout<<temp;
y = y - temp * b;
}
cout<<" "<<y;
}
return 0;
}