题目:
本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。
输入格式:
输入在一行中依次给出 A 和 B,中间以 1 空格分隔。
输出格式:
在一行中依次输出 Q 和 R,中间以 1 空格分隔。
输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
经验总结
一道简单的大整数除法,代码思路就是计算除法的思路。
被除数只有一位时要注意输出可以为0。
存入被除数和结果时用的是字符串,要注意ASCII码的转换。
总体比较简单。
AC代码
#include<iostream>
#include"stdio.h"
#include"math.h"
#include"string.h"
#include"algorithm"
using namespace std;
int main(){
char a[1005],q[1005];
int i,j,l,k;
int b,c,r;
while(cin>>a){
getchar();
cin>>b; getchar();
l=strlen(a);
for(i=0;i<l;i++) a[i]=a[i]-'0';
if(l==1){
cout<<a[0]/b<<" "<<a[0]%b<<endl;
}else{
k=0;r=0;
for(i=0;i<l;i++)
{
r=r*10+a[i];
q[i]=r/b+'0';
r=r%b;
}
if(q[0]!='0') cout<<q[0];
for(i=1;i<l;i++) cout<<q[i];
cout<<" "<<r<<endl;
}
}
return 0;
}