以下是我的思路b
程序不能自动解方程,于是我用一个变量h代替第二站上车的人数。
并在后面的计算中单独用数组装起来,
我一共用了九个数组,
ag,bg,cg,ah,bh,ch;
ag,ah,相加表示上车人数,
bg,bh相加表述下车人数,
cg,ch相加表示在车,
且h系的数组单位为1,g系数组单位为g(g已知);
最后根据n-1站人数求出h;
#include<bits/stdc++.h>
int main()
{
int g,n,m,x,i;
while(scanf("%d %d %d %d",&g,&n,&m,&x)!=EOF)
{
long long ag[27],bg[27],cg[27],ah[27],bh[27],ch[27];
ag[1]=g;
bg[1]=0;
cg[1]=g;
ah[1]=0;
bh[1]=0;
ch[1]=0;
ag[2]=0;
bg[2]=0;
cg[2]=g;
ah[2]=1;
bh[2]=1;
ch[2]=0;
for(i=3;i<n;i++)
{
ag[i]=ag[i-1]+ag[i-2];
ah[i]=ah[i-1]+ah[i-2];
bg[i]=ag[i-1];
bh[i]=ah[i-1];
cg[i]=cg[i-1]+ag[i]-bg[i];
ch[i]=ch[i-1]+ah[i]-bh[i];
}
int h;
if((m-cg[n-1])%ch[n-1]==0)
{
h=(m-cg[n-1])/ch[n-1];
printf("%d\n",cg[x]+ch[x]*h);}
else
{
printf("No answer\n");
}
}
}
但是不知道为甚,还是有问题,,,,,