0
0
0
张帆
中级天翼
中级天翼
string add(string s1,string s2){
int a[100010],b[100010],c[100010];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
a[0]=s1.size();
b[0]=s2.size();
for(int i=1;i<=a[0];i++){
a[i]=s1[a[0]-i]-'0';
}
for(int i=1;i<=b[0];i++){
b[i]=s2[b[0]-i]-'0';
}
int l=max(a[0],b[0]);
for(int i=1;i<=l;i++){
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i]/10;
c[i]%=10;
}
if(c[l+1]!=0) l++;
string asd="";
for(int i=1;i<=l;i++){
asd+=(char)(c[l-i+1]+48);
}
return asd;
}
@汪宇航
0
汪恺恒
中级启示者
中级启示者
f[1]="1",f[2]="1";
for(int i=3;i<=n;i++){
f[i]=Plus(f[i-1],f[i-2]);
}
cout<<f[n];
注意f数组为string类型,Plus是高精度加法的函数
0
0
0
朱优扬
中级天翼
中级天翼
Plus函数:
pos=0;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
for(int i=1;i<=x.size();i++) b[i]=x[x.size()-i]-'0';
for(int i=1;i<=y.size();i++) c[i]=y[y.size()-i]-'0';
for(int i=1;i<=max(x.size(),y.size());i++){
d[++pos]=b[i]+c[i]+jw;
jw=d[pos]/10;
d[pos]%=10;
}
if(jw>=1){
pos++;
d[pos]=jw;
}
jw=0;
string tmp="";
for(int i=pos;i>=1;i--)
tmp+=(char)(d[i]+'0');
return tmp;
main函数:
f[1]="1",f[2]="1";
cin>>n;
for(int i=3;i<=n;i++){
f[i]=Plus(f[i-1],f[i-2]);
}
cout<<f[n];
除了f数组,剩下的都是int
PS:f是string型的
数组都开1010
0