这道题很明显是考查的斐波那契数列
因此我们得到以下代码
#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
a[1]=1,a[2]=1;
int n,m;
cin>>m>>n;
int k=n-m+1;
if(k==1) cout<<1;
if(k==2) cout<<1;
for(int i=3;i<=k;i++){
a[i]=a[i-1]+a[i-2];
}
cout<<a[k];
return 0;
}
但这只是斐波那契数列,我们通过细致分析可得
这道题其实还有高精度
因此我们得到以下代码
#include<bits/stdc++.h>
using namespace std;
int m, n;
int f[1002][1002];
int lens=1;
void cal(int index){
int x=0;
int i=1;
while(i<=lens){
f[index][i] = f[index-1][i] + f[index-2][i] + x;
x = f[index][i]/10;
f[index][i] %= 10;
i++;
}
if(x>0){
lens++;
f[index][lens]=x;
}
}
int main(){
scanf("%d %d", &m, &n);
f[1][1]=1, f[2][1]=2;
for(int i=3; i<=n-m; i++){
cal(i);
}
// 注意:逆序输出
for(int i=lens; i>=1; i--){
cout<<f[n-m][i];
}
return 0;
}