【C++】浙大PAT (Basic Level)1017. A除以B (20)

1017. A除以B (20)

时间限制
100 ms
内存限制
32000 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

输入格式:

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

输出格式:

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

输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3
(1)测试点2是被除数比除数小的例子
#include<iostream>
#include<string>
using namespace std;

int convert(string str){
	int n=str.size(),m=0;
	if(n>0){
		for(int i=0;i<n;i++){
			m=m*10;
			m+=str[i]-'0';
		}
	}else{
		m=0;
	}
	return m;
}

int main(){
	string str1,str2,sub,final="";
	int m1,m2,n,i=0,last;
	cin>>str1>>str2;
	n=str2.size();
	m2=convert(str2);
	last=m2;
	if(str1.size()==str2.size()&&convert(str1)<convert(str2)){
		final='0';
		last=convert(str1);
	}
	sub=str1.substr(i,n);
	m1=convert(sub);
	if(m1<m2){
		m1=m1*10;
		i=i+n;
		m1+=convert(str1.substr(i,1));
	}
	while(i<str1.size()){
		int ss=m1/m2;
		char aa;
		aa='0'+ss;
		final=final+aa;
		m1=m1%m2;
		last=m1;
		m1=m1*10;
		i++;
		m1+=convert(str1.substr(i,1));
	}
	
	cout<<final<<' '<<last;
	system("pause");
	return 0;
}

你可能感兴趣的:(【C++】浙大PAT (Basic Level)1017. A除以B (20))