#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
string al,bl;
int lena,lenb,lenc,x,a[N],b[N],c[N];
int main(){
cin>>al>>bl;
lena=al.size();
lenb=bl.size();
for(int i=0;i<=lena-1;i++) a[lena-i]=al[i]-'0';
for(int i=0;i<=lenb-1;i++) b[lenb-i]=bl[i]-'0';
lenc=1;
while(lenc<=lena||lenc<=lenb){
c[lenc]=a[lenc]+b[lenc]+x;
x=c[lenc]/10;
c[lenc]%=10;
lenc++;
}
c[lenc]=x;
while(c[lenc]==0&&lenc>1) lenc--;
for(int i=lenc;i>=1;i--) cout<<c[i];
return 0;
}
此乃本蒟蒻高精加代码,能不能帮我变成像下面的函数(输入两个string,返回一个string,函数外不用定义变量,只要定义常量)?必关。
/*
const int N=1e4+10;
string cheng(string al,string bl){
int a[N],b[N],c[N<<1],lena,lenb,lenc,x;
for(int i=0;i<N;i++){
a[i]=b[i]=0;
}
a[0]=b[0]=1;
for(int i=0;i<(N<<1);i++) c[i]=0;
string cl;
lena=al.size();
lenb=bl.size();
for(int i=0;i<lena;i++) a[lena-i]=al[i]-'0';
for(int i=0;i<lenb;i++) b[lenb-i]=bl[i]-'0';
for(int i=1;i<=lena;i++){
x=0;
for(int j=1;j<=lenb;j++){
c[i+j-1]+=a[i]*b[j]+x;
x=c[i+j-1]/10;
c[i+j-1]%=10;
}
c[lenb+i]=x;
}
lenc=lena+lenb;
while(c[lenc]==0&&lenc>1) lenc--;
for(int i=lenc;i>=1;i--) cl+=(char(c[i]+'0'));
return cl;
}
*/