rt,不知道哪里有问题(AI改的我又看不懂。。。)
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
class BigNum{
public:
int n;
int d[1000];
BigNum()
{
n = 0;
memset(d,0,sizeof(d));
}
void read()
{
char s[1000];
scanf("%s",s);
n = strlen(s);
for(int i = 0;i<n;i++)
{
d[i] = s[n-i-1];
}
}
bool operator>=(const BigNum &b)
{
if(n>b.n)
{
return true;
}
else if(n==b.n)
{
for(int i = 0;i<n;i++)
{
if(d[i] > b.d[i])
{
return true;
}
else if(d[i]<b.d[i])
{
return false;
}
}
return true;
}
else
{
return false;
}
}
BigNum operator-(const BigNum &b)
{
BigNum c;
bool f = false;
if(*this>=b)
{
for(int i = 0;i<n;i++)
{
if(d[i]<b.d[i])
{
d[i]+=10;
d[i+1]-=1;
}
c.d[i] = d[i]-b.d[i];
}
while(c.d[c.n-1]==0&&c.n>0)
{
c.n--;
}
}
else
{
f = true;
for(int i = 0;i<n;i++)
{
if(b.d[i]<d[i])
{
d[i]+=10;
d[i+1]-=1;
}
c.d[i] = b.d[i]-d[i];
}
while(c.d[c.n-1]==0&&c.n>0)
{
c.n--;
}
}
if (f){
c.d[n-1] = 0-c.d[n-1];
}
return c;
}
};
int main()
{
BigNum a,b;
a.read();
b.read();
BigNum c = a-b;
for(int i = c.n-1;i>=0;i--)
{
cout << c.d[i];
}
return 0;
}