1. 程式人生 > >1017 A除以B

1017 A除以B

本題要求計算 A/B,其中 A 是不超過 1000 位的正整數,B 是 1 位正整數。你需要輸出商數 Q 和餘數 R,使得 A=B×Q+R 成立。

輸入格式:

輸入在一行中依次給出 A 和 B,中間以 1 空格分隔。

輸出格式:

在一行中依次輸出 Q 和 R,中間以 1 空格分隔。

輸入樣例:

123456789050987654321 7

輸出樣例:

17636684150141093474 3

分析:

       A是不超過一千位的正整數,這裡顯然要用字串儲存了。而字串儲存的是ASCII碼,要算除法,必然要把字元轉換成整型。要怎麼解決這個問題,我們很自然地會想到模擬日常生活中筆算的過程。方法還是蠻簡單的,看程式碼自然就懂了。這裡有兩個需要注意的地方,一是商的第一位不能輸出0,我們會給他新增if(i != 0)的限制,可是還有一點,就是商只有1位的時候,如果是0就需要輸出了。所以思維要嚴謹!

#include<iostream>

using namespace std;

int main(){
	string A;
	int B, remainder = 0;
	cin >> A >> B;
	for(int i = 0; i < A.length(); i++){
		remainder = remainder * 10 + A[i] - '0';
		if(remainder >= B){
			cout << remainder / B;
			remainder %= B;
		}else{
			if(i != 0 || A.length() == 1) cout << '0';
		}	
	}
	cout << ' ' << remainder;
}