华师一附中OI组
标题: P1011 车站 [打印本页]
作者: 倚窗倾听风吹雨 时间: 2018-8-20 12:01
标题: P1011 车站
https://www.luogu.org/problemnew/show/P1011
火车:
火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定的规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问从x站开出时车上的人数是多少?
输入:输入文件仅有一行,为四个整数a,n,m和x。(n<=23)
输出:输出x站开出时车上的人数。
输入输出举例:
输入tran.in: 则输出train.out:
010 40 6 8
作者: 倚窗倾听风吹雨 时间: 2018-8-20 12:01
- #include<iostream>
- #include<cstdio>
- using namespace std;
- int a,n,m,x,k;
- struct train
- {
- int now,up,off;
- }t[30];
- int main()
- {
- // freopen("train.in","r",stdin);
- // freopen("train.out","w",stdout);
- cin>>a>>n>>m>>x;
- t[1].up=a;t[1].off=0;
- t[1].now=a;
- for(int i=0;i<=999999;i++)
- {
- t[2].up=i;
- t[2].off=i;
- t[2].now=a;
- for(int j=3;j<=n-1;j++)
- {
- t[j].up=t[j-1].up+t[j-2].up;
- t[j].off=t[j-1].up;
- t[j].now=t[j-1].now+t[j-1].up+t[j-2].up-t[j-1].up;
- /// cout<<t[j].up<<" "<<t[j].off<<" "<<t[j].now<<endl;
- }
- if(t[n-1].now==m)
- {
- cout<<t[x].now<<endl;
- /* for(int j=1;j<=n;j++)
- cout<<t[j].up<<" "<<t[j].off<<" "<<t[j].now<<endl;*/
- // fclose(stdin);
- // fclose(stdout);
- return 0;
- }
- }
- }
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/) |
Powered by Discuz! X3.2 |