https://pintia.cn/problem-sets/994805260223102976/problems/994805305181847552
3.10改进版本
虽说题目说了被除数是正整数,但还是要考虑被除数是零的情况。
#include<iostream>
#include<string>
using namespace std;
int main(){
int b, num;
string a, q, r;
cin >> a >> b;
for(int i=0; i<a.size(); i++){
r += a[i];
num = atoi(r.c_str());
q += to_string(num/b);
r = to_string(num%b);
}
// 考虑到被除数是0的情况
if(q[0]=='0' && q.size()>1){
q.erase(0,1);
}
cout << q << " " << r << endl;
return 0;
}
原版
这题的被除数太大了,只能用字符串表示。遍历字符串,每个字符转成int型除以除数,每次除得的商进行不断地拼接。每次除得的余数需要和下一个字符一起转为被除数。
#include<iostream>
#include <string.h>
using namespace std;
int main(){
string a, q;
int b, c, r=0;
cin >> a >> b;
if(a.size() == 1){
c = a[0]-'0';
q = to_string(c / b);
r = c % b;
cout << q << " " << r;
return 0;
}
for(int i=0; i<a.size(); i++){
c = r * 10 + a[i] - '0';
if(!(i==0 && c/b==0))
q += to_string(c / b);
r = c % b;
}
cout << q << " " << r;
return 0;
}