当用容器的.size()
方法时,循环变量i
不能用int
类型,要用size_t
类型,不然会出错。
还有在反向遍历的时候一定要记得i--
而不是i++
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# include <iostream>
using namespace std;
struct bign
{
int d[1010];
int len;
bign(): d{0}, len(0){}
bign(string str): bign(){ // 这个:bign()将str.size()长度之外的地方都初始化为0,不加也能过测试点,但是为了安全加上好点
len = str.size();
for(size_t i=0;i<str.size();++i)
d[i] = str[len-1 - i] - '0';
}
pair<bign, int> operator/(int rhs){
bign c;
c.len = len;
int r = 0;
for(int i = len - 1; i >= 0 ;--i){
r = r*10 + d[i];
if(r < rhs){
c.d[i] = 0;
}
else{
c.d[i] = r / rhs;
r = r % rhs;
}
}
while(c.d[c.len - 1] == 0 && c.len >= 2)
c.len--;
return {c, r};
}
void show(){
for(int i=len-1;i>=0;--i){
printf("%d", d[i]);
}cout << " ";
}
};
int main()
{
string strnum;
int b;
cin >> strnum >> b;
bign a(strnum);
auto c = (a / b);
c.first.show();
cout << c.second;
return 0;
}