@[金镖十三娘](/space/show?uid=87032)
要用**高精**的
```cpp
#include<iostream>
#include<cstring>
using namespace std;
int n,m,i,j,a[500],b[500],c[500];
int main()
{
cin>>n>>m;
a[0]=1;
a[1]=1;
memset(b,0,sizeof(b));
b[0]=1;
b[1]=0;
for (j=n+1;j<=m;j++)
{
for (i=0;i<=a[0];i++) c[i]=a[i];
for (i=1;i<=a[0];i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
while (a[a[0]+1]>0) a[0]++;
memset(b,sizeof(b),0);
for (i=0;i<=c[0];i++) b[i]=c[i];
}
for (i=a[0];i>=1;i--) cout<<a[i];
cout<<endl;
return 0;
}
```
by yuzhechuan @ 2018-02-21 15:43:18
感谢大佬
by 金镖十三娘 @ 2018-02-21 16:00:04
by 神秘人哈哈 @ 2018-04-16 13:40:25
#include<cstdio>
#include<iostream>
#define L 11000
using namespace std;
string add(string a,string b) {//高精
string ans;
int na[L]= {0},nb[L]= {0};
int la=a.size(),lb=b.size();
for(int i=0; i<la; i++) na[la-1-i]=a[i]-'0';
for(int i=0; i<lb; i++) nb[lb-1-i]=b[i]-'0';
int lmax=la>lb?la:lb;
for(int i=0; i<lmax; i++) na[i]+=nb[i],na[i+1]+=na[i]/10,na[i]%=10;
if(na[lmax]) lmax++;
for(int i=lmax-1; i>=0; i--) ans+=na[i]+'0';
return ans;
}
string a[1001]={"0","1","1"};//尤其注意!!
int m,n;
int main() {
cin>>m>>n;
int cc=n-m+1;
for(int i=3;i<=cc;i++){
a[i]=add(a[i-1],a[i-2]);
}
cout<<a[cc];
return 0;
}
by 神秘人哈哈 @ 2018-04-16 13:40:31
@[神秘人哈哈](/user/57629) 希望更丰富的展现?使用Markdown
by ReFRoK @ 2021-03-21 15:31:47