1. 程式人生 > >要求計算A/B,其中A是不超過1000位的正整數,B是1位正整數。你需要輸出商數Q和餘數R,使得A = B * Q + R成立。

要求計算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前面有空格
}

執行結果:

在這裡插入圖片描述