0
已采纳
范浩轩
资深守护
资深守护
int a[1000],b[1000],c[1000];
string PLUS(string x,string y)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=x.size(),b[0]=y.size();
c[0]=max(a[0],b[0]);
for(int i=1;i<=a[0];i++)
{
a[i]=x[a[0]-i]-'0';
}
for(int i=1;i<=b[0];i++)
{
b[i]=y[b[0]-i]-'0';
}
int jw=0;
for(int i=1;i<=c[0];i++)
{
c[i]=a[i]+b[i]+jw;
jw=c[i]/10;
c[i]%=10;
}
if(jw!=0)
{
c[++c[0]]++;
}
string s="";
for(int i=c[0];i>=1;i--)
{
s+=c[i]+'0';
}
return s;
}
这是加法的
———————————————————————————————————————————————————————
int a[1005],b[1005],c[1000005];
string PLUS(string x,string y)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=x.size(),b[0]=y.size();
c[0]=a[0]+b[0]-1;
for(int i=1;i<=a[0];i++)
{
a[i]=x[a[0]-i]-'0';
}
for(int i=1;i<=b[0];i++)
{
b[i]=y[b[0]-i]-'0';
}
for(int i=1;i<=a[0];i++)
{
for(int j=1;j<=b[0];j++)
{
c[i+j-1]+=a[i]*b[j];
}
}
for(int i=1;i<=c[0];i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
if(c[c[0]+1]!=0)
{
c[0]++;
}
string s="";
for(int i=c[0];i>=1;i--)
{
s+=c[i]+'0';
}
while(s.size()!=1&&s[0]=='0')
{
s.erase(0,1);
}
return s;
}
这是乘法的
———————————————————————————————————————————————————————
int a[10005],b[10005],c[10005];
string MINUS(string x,string y)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=x.size(),b[0]=y.size();
c[0]=a[0];
for(int i=1;i<=a[0];i++)
{
a[i]=x[a[0]-i]-'0';
}
for(int i=1;i<=b[0];i++)
{
b[i]=y[b[0]-i]-'0';
}
for(int i=1;i<=c[0];i++)
{
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
c[i]=a[i]-b[i];
}
string s="";
for(int i=c[0];i>=1;i--)
{
s+=c[i]+'0';
}
while(s[0]=='0'&&s.size()!=1)
{
s.erase(0,1);
}
return s;
}
这是减法的
注意:所有高精度都要用到头文件:
#include<cstring>
0
0
0