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

题目描述:

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

输入描述:

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

输出描述:

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

输入例子:

123456789050987654321 7

输出例子:

17636684150141093474 3

核心思想:

用一个字符数组存储数字A的每一位,每一步的计算与以下两项有关:
1、前一位留下的余数q
2、此位的数字h(存于字符数组里为字符)
每一步输出(q×10+h)/B,输出之后,q变为(q×10+h)%B,为下一步做准备。

另外注意第一位要特殊处理,因为第一位为0的话是不输出的!

代码如下:

#include<stdio.h>
int main()
{
	char a[1002]={0};
	int b;
	scanf("%s",a);
	scanf("%d",&b);
	int q,h;
	h=a[0]-'0';
	q=h%b;			//下一位的q
	if(h>=b)
		printf("%d",h/b);
	int i=1,t;
	while(a[i]!=0)
	{
		h=a[i++]-'0';
		printf("%d",(q*10+h)/b);
		q=(q*10+h)%b;
	}
	printf(" %d\n",q);	//注意%d前面有空格
}

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Nothing_but_Fight/article/details/84492126
今日推荐