高精度计算,实际上就是模拟竖式计算,代码如下,请慢慢消化,如有不足或建议,请在评论区留言
#include <bits/stdc++.h>
using namespace std;
int a[1001],b[1001],c[1001];
void init(int a[])
{
string s;
cin>>s;
a[0]=s.length();
for(int i=1 ;i<=a[0]; i++)
{
a[i]=s[a[0]-i]-'0';
}
}
void print(int a[])
{
for(int i=a[0]; i>=1; i--)
{
cout<<a[i];
}
}
bool cmp(int a[],int b[])
{
if(a[0]!=b[0])
{
return a[0]>b[0];
}
for(int i=a[0]; i>=1; i--)
{
if(a[i]!=b[i])
{
return a[i]>b[i];
}
}
return true;
}
void sub(int a[],int b[])
{
if(!cmp(a,b))
{
swap(a,b);
cout<<"-";
}
memset(c,0,sizeof(c));
for(int i=1; i<=a[0]; i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
}
while(c[a[0]]==0 && a[0]!=1){
a[0]--;
}
c[0]=a[0];
}
int main()
{
init(a);
init(b);
sub(a,b);
print(c);
return 0;
}