我看了讨论才知道原来题目和题目描述不匹配。。。
说好每次都有人上车的,哪来0个人。。。
前代码:
#include<iostream>
using namespace std;
int main(){
int a,n,m,x;
cin>>a>>n>>m>>x;
int ans;
int s = 1;
int list[n - 1];
while(true){
int add1 = a,add2 = s;
list[0]=a;
list[1]=a;
//add1 前2次上车,add2 前一次上车
//cout<<list[0]<<endl;
//cout<<list[1]<<endl;
for(int i = 2;i < n - 1;i++){
list[i] =list[i-1]+ add1 + add2;
list[i] -= add2;
//cout<<list[i]<<" "<<add1<<" "<<add2<<endl;
int temp = add2;
add2 = add1 + add2;
add1 = temp;
}
//cout<<"list[n-2]:"<<list[n-2]<<endl;
if (list[n-2]==m){
ans = list[x-1];
//cout<<"s:"<<s<<endl;
break;
}
s++;
}
cout<<ans;
return 0;
}
拿了75分;
改了之后的代码:
#include<iostream>
using namespace std;
int main(){
int a,n,m,x;
cin>>a>>n>>m>>x;
int ans;
int s = 0;//就这里改了
int list[n - 1];
while(true){
int add1 = a,add2 = s;
list[0]=a;
list[1]=a;
//add1 前2次上车,add2 前一次上车
//cout<<list[0]<<endl;
//cout<<list[1]<<endl;
for(int i = 2;i < n - 1;i++){
list[i] =list[i-1]+ add1 + add2;
list[i] -= add2;
//cout<<list[i]<<" "<<add1<<" "<<add2<<endl;
int temp = add2;
add2 = add1 + add2;
add1 = temp;
}
//cout<<"list[n-2]:"<<list[n-2]<<endl;
if (list[n-2]==m){
ans = list[x-1];
//cout<<"s:"<<s<<endl;
break;
}
s++;
}
cout<<ans;
return 0;
}
拿了满分。。。 大家千万别入坑