高精度加法代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
int a[110],b[110],c[110],l1,l2,l;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>s1>>s2;
l1=s1.size();
l2=s2.size();
for(int i=1;i<=l1;i++)
{
a[i]=s1[l1-i]-'0';
}
for(int i=1;i<=l2;i++)
{
b[i]=s2[l2-i]-'0';
}
l=max(l1,l2);
for(int i=1;i<=l+1;i++)
{
c[i]=a[i]+b[i];
a[i+1]+=c[i]/10;
c[i]=c[i]%10;
}
l++;
while((c[l]==0)&&l>1)l--;
for(int i=l;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
高精度乘法板子
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
int a[110],b[110],c[110],l1,l2,l;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>s1>>s2;
l1=s1.size();
l2=s2.size();
for(int i=1;i<=l1;i++)
{
a[i]=s1[l1-i]-'0';
}
for(int i=1;i<=l2;i++)
{
b[i]=s2[l2-i]-'0';
}
for(int i=1;i<=l1;i++)
{
for(int j=1;j<=l2;j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
l=l1+l2+1;
while(c[l]==0&&l>1)l--;
for(int i=l;i>=1;i--)
{
cout<<c[i];
}
return 0;
}