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
其实本题乍一看很复杂,实则不然,只需在草稿纸中模拟除法运算过程即可得知此题奥妙,因为B为1位正整数,因此在除法时,最多也只会借一位,其中意思读者可结合代码理解,其中要注意的是,A的第一位可能不够除B此时要借下一位,但是此时的0就不能输出,而以后的借位则需输出0,详情请看代码,代码如下。
#include<stdio.h>
#include<string.h>
int main(){
char A[1010];
int B;
scanf("%s%d",A,&B);
int R=0;
int lenth=strlen(A);
char Q[1010];
int j=0;
char q;
for(int i=0;i<lenth;i++){
R=R*10+A[i]-'0';
if(R<B&&i==0){
continue;
}
if(R<B&&i!=0){
Q[j]='0';
j++;
}
else{
Q[j]=R/B+'0';
j++;
R=R%B;
}
}
if(j>0){
for(int i=0;i<j;i++){
printf("%c",Q[i]);
}
printf(" %d",R);
}
else{
printf("0 %d",R);
}
}