用的二分+暴力
递归次数也不会很多吧?
请dalao帮我
#include<bits/stdc++.h>
using namespace std;
int a,n,m,x;
int fibo[30];
void init(){
scanf("%d%d%d%d",&a,&n,&m,&x);
fibo[1]=a;
}
int temp[30];
bool flag;
void cal(int l,int r){
if(flag==1) return;
int mid=(l+r)/2;
fibo[2]=mid;
temp[1]=a;
temp[2]=a;
for(int i=3;i<=n;i++){
fibo[i]=fibo[i-1]+fibo[i-2];//上车人数=前两站的和
temp[i]=temp[i-1]+fibo[i-2];
}
if(temp[n-1]==m) {
flag=1;
return;
}
else if(temp[n-1]<m) cal(mid+1,r);
else if(temp[n-1]>m) cal(l,mid);
}
signed main(){
init();
cal(1,a);
printf("%d",temp[x]);
return 0;
}
万分感谢