SCU 1118 上车人数
来源:互联网 发布:木工数控雕刻软件 编辑:程序博客网 时间:2024/05/01 23:48
【问题描述】
公共汽车从始发站(称为第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
题解:已知当前站点车上人数比上次站点车上人数多了上上次上车人数,也就是说车上多的人数跟第三站上车人数和起始人数有斐波拉契数列的关系,先求出第三站上车人数就OK了。。。
#include <cstdio>#include <cstdlib>#include <cstring>#include <iostream>#include <cmath>#include <algorithm>using namespace std;long long f[10010],k[10010];int main(){int i,a,n,m,x;f[0]=0;k[0]=0;f[1]=1;f[2]=1;k[1]=1;k[2]=2;for (i=3;i<=10000;i++) {f[i]=f[i-1]+f[i-2];k[i]=k[i-1]+f[i];}while (~scanf("%d%d%d%d",&a,&n,&m,&x)){if (x==1 || x==2){printf("%d\n",a);continue;}long long s=0;s=(m-2*a-k[n-5]*a)/k[n-4];printf("%lld\n",2*a+k[x-3]*s+k[x-4]*a);}return 0;}
- SCU 1118 上车人数
- SCU 1118-上车人数(递推)
- 上车人数
- 【上车人数】
- 上车人数
- 上车人数
- 1070: 上车人数
- 上车人数 oj70
- ACM基础题——上车人数
- 上车
- SCU
- SCU
- SCU
- SCU
- 【SCU
- SCU
- SCU
- SCU
- draganddrop图片拖动效果
- 类似微信listview中item的滑动显示更多操作
- man c++手册
- 抽象类的一些特点
- 编译器与平台相关性
- SCU 1118 上车人数
- Recursion 八皇后问题 @CareerCup
- 关于如何使用websocket 接收并显示图片或者操作二进制
- Error starting static Resources workspace\.metadata\.plugins\org.eclipse.wst.server.co
- jsf 注解
- Python判断字符串中是否有中文字符
- (转)查看进程打开了哪些文件&某一个文件正在被哪些进程所读写
- 串口 COM口 USB-TTL RS-232 RS-485 不同标准 区别 释疑
- codeforces #215 DIV1