题目描述
本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。
输入描述:
输入在1行中依次给出A和B,中间以1空格分隔。
输出描述:
在1行中依次输出Q和R,中间以1空格分隔。
输入例子:
123456789050987654321 7
输出例子:
17636684150141093474 3
思路
模拟手算除法 用数组存数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 1000
int main()
{
char a[max+2],quo[max+2];
int i,b,rem,len;
while(scanf("%s %d",a,&b)!=EOF)
{
len=strlen(a);
for(rem=0,i=0; i<len; i++)
{
rem=rem*10+a[i]-'0';
quo[i]=rem/b;
if(quo[i] == 0)
{
continue; // 不够除直接右移
}else{
rem=rem-quo[i]*b;
}
}
for(i=0; i<len; i++)
{
if(i==0 && quo[i]==0) continue;
printf("%d",quo[i]);
}
printf(" %d",rem);
}
system("pause");
}