PAT-B 1017 A除以B【模擬 大數除法】

Enjoy_process發表於2019-02-22

                                                PAT-B 1017 A除以B

                 https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552

 

 

題目

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

輸入

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

輸出

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

樣例輸入

123456789050987654321 7

樣例輸出

17636684150141093474 3

分析

使用字串接收大數,註釋很詳細,具體看程式。

C++程式

#include<iostream>
#include<string>

using namespace std;

int main()
{
	string a;
	int b;
	cin>>a>>b;
	int temp=0;
	bool flag=false;//是否輸出過非零位 
	for(int i=0;i<a.length();i++)
	{
		temp=temp*10+a[i]-'0';
		int x=temp/b;
		temp%=b;
		//如果首位為0就跳過(防止出現前導零) 
		if(!flag&&x==0) continue;
		cout<<x;//輸出商的這一位 
		flag=true;//已經輸出過非零位了,置為true,以後出現0就可以輸出了 
	}
	if(!flag) cout<<"0";//商為0的情況
	cout<<" "<<temp<<endl;//輸出餘數
	return 0; 
}

 

相關文章