求助20分

P1011 [NOIP1998 提高组] 车站

现在又40分了 ```cpp #include <bits/stdc++.h> using namespace std; const int M=1e4+50; int a,n,m,x,ans; int plus[M],minus[M]; int tap[20],sum[20]; int main(){ cin>>a>>n>>m>>x; if(x<3){ ans=a; } else if(x>=3){ ans=a*2; } else if(x>=4){ tap[1]=tap[2]=1; for(int i=3;i<=n-4;i++){ tap[i]=tap[i-1]+tap[i-2];//斐波拉契 } for(int i=1;i<=n-4;i++){ sum[i]=sum[i-1]+tap[i]; } int m=(m-sum[n-5]*a-ans)/sum[n-4]; ans+=sum[x-4]*a+sum[x-3]*m; } cout<<ans<<endl; return 0; } //plus[0]=0; //minus[0]=0; //plus[1]=minus[1]; //plus[i]=plus[i-1]+plus[i-2];(i>2)斐波拉契数列 //minus[i]=plus[i-1]; //...... //tap[n]-m=0; ```
by orangeSteve_dev @ 2024-07-22 16:44:11


|