上车人数 oj70

来源:互联网 发布:网络市场发展趋势 编辑:程序博客网 时间:2024/05/02 03:01

上车人数

发布时间: 2017年5月25日 19:57   最后更新: 2017年5月26日 00:20   时间限制: 1000ms   内存限制: 128M

公共汽车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达 第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下 车的人数有一定的规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的 条件是:共有n个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问从x站开出时车上的人数是多少?

只有一行,四个整数a,n,m和x

x站开出时车上的人数

 复制
5 7 32 4
13
#include <iostream>using namespace std;int main(){long long f[10001], ans[10001];int a, n, m, x;f[0] = 0; ans[0] = 0;f[1] = 1; f[2] = 1;ans[1] = 1; ans[2] = 2;for (int i = 3; i <= 1010; i++){f[i] = f[i - 1] + f[i - 2];ans[i] = ans[i - 1] + f[i];}long long tmp;cin >> a >> n >> m >> x;if (x == 1 || x == 2){cout << a << endl;return 0;}tmp = (m - 2 * a - ans[n - 5] * a) / ans[n - 4];cout << 2 * a + ans[x - 3] * tmp + ans[x - 4] * a << endl;return 0;}