高精加法和乘法模板都会写但是阶乘之和不知道怎么套只能用python水过
加法
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[310],b[310];
int x[310]={0},y[310]={0},z[310]={0};
cin>>a>>b;
int lena=strlen(a),lenb=strlen(b);
int len=max(lena,lenb);
for(int i=1;i<=lena;i++)
{
x[i]=a[lena-i]-'0';
}
for(int i=1;i<=lenb;i++)
{
y[i]=b[lenb-i]-'0';
}
for(int i=1;i<=len;i++)
{
z[i]+=x[i]+y[i];
z[i+1]+=z[i]/10;
z[i]=z[i]%10;
}
len++;
while(len>1&&z[len]==0)len--;
for(int i=len;i>=1;i--)
{
cout<<z[i];
}
return 0;
}
乘法
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a[310],b[310];
cin>>a>>b;
int x[1010]={0},y[1010]={0},z[1010]={0};
int lena=strlen(a),lenb=strlen(b);
for(int i=1;i<=lena;i++)
{
x[i]=a[lena-i]-'0';
}
for(int i=1;i<=lenb;i++)
{
y[i]=b[lenb-i]-'0';
}
for(int i=1;i<=lena;i++)
{
for(int j=1;j<=lenb;j++)
{
z[i+j-1]+=x[i]*y[j];
z[i+j]+=z[i+j]/10;
z[i+j-1]%=10;
}
}
int len=lena+lenb+1;
while(len>1&&z[len]==0)len--;
for(int i=len;i>=1;i--)
{
cout<<z[i];
}
return 0;
}