1017 A除以B 測試點1 超大數字存儲,除法 字符轉數字 PTAbasic 浙大C++

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

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

輸入樣例:
123456789050987654321 7
輸出樣例:
17636684150141093474 3

方法:
利用除法的原理,從最高位開始,除以除數並輸出,餘數*10加給下一位作爲被除數。最後即可輸出商,再輸出餘數即可。

#include<iostream>
#include<cstring>
using namespace std;

int main(){
	char a[1000];
	int b,flag=0;
	cin>>a>>b;
	int len=strlen(a);
	int x=0;
	int now=a[0]-'0';
	for(int i=0;i<len;i++){
		now=a[i]-'0'; 
		int j=0;
		if(i!=0)
			now=now+x*10;
		j=now/b;
		x=now%b;    //餘數,給下一位 
		if(i!=0||j!=0){ 
			cout<<j;
			flag=1;
		}
	}
	if(flag==0)
		cout<<"0";
	cout<<" "<<x;
}

注意:
1、測試點1
是商爲0的情況,需要輸出商爲0,餘數爲被除數。
例:6/8 輸出 0 6
2、注意當商的開始位爲0時不輸出。
例:23/5 商爲04 餘數3 商前面的0不輸出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章