求助
查看原帖
求助
339746
Aerov楼主2023/7/1 21:17

蒟蒻累加法推出来公式是这样的:

number[n]−number[2]=∑i=1n−2up[i]number[n] - number[2] = \sum_{i=1}^{n-2} up[i]

numbernumber 是当前车上的人数,upup 是上车的人数,但是样例也过不了,求助大佬纠错。

代码如下

#include<bits/stdc++.h>
using namespace std;
int num_a[25],num_u[25],ans[25];
int main(){
   int a,n,m,x;
   scanf("%d%d%d%d",&a,&n,&m,&x);
   num_a[1]=1,num_u[1]=0,num_a[2]=0,num_u[2]=1;
   for(int i=3;i<=n;i++) num_a[i]=num_a[i-2]+num_a[i-1],num_u[i]=num_u[i-2]+num_u[i-1];
   int sum_a=0,sum_u=0;
   for(int i=1;i<=n-2;i++) sum_a+=num_a[i],sum_u+=num_u[i];
   int u=(m-a-sum_a*a)/sum_u;
   ans[1]=a,ans[2]=a;
   for(int i=3;i<=x;i++) ans[i]=ans[i-1]+num_a[i-2]*a+num_u[i-2]*u;
   printf("%d\n",ans[x]);
   return 0;
}

谢谢!

2023/7/1 21:17
加载中...