开发者社区> 华山青竹> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

2287 火车站

简介: 题目链接:http://codevs.cn/problem/2287/ 题目描述 Description 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。
+关注继续查看
题目链接:http://codevs.cn/problem/2287/
题目描述 Description

火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定的规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有N个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问从x站开出时车上的人数是多少?若无解输出“No answer.”(所有数据均在longint范围内)

输入描述 Input Description

a,n,m和x

输出描述 Output Description

x站开出时车上的人数

样例输入 Sample Input

1 6 7 3

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

 算法分析:

假设第2站上车人数y,下车人数也是y。根据题目意思可以有如下表格:

观察发现上车、下车人数这两行里面a和x的系数分别独自形成斐波那契数列。

所以,定义结构体struct  obj,含两个成员项p和q分别表示a和x的系数。

最后一个车站下车人数m等于第n-1个车站出发的人数。上表中有6a+7y=m,已知a即可求得y。若y为整数则有解,若y不为整数则无解。

若是有解则可以根据y计算第x个车站出发时的人数。具体参考代码: 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 struct obj
 4 {
 5     int p,q;
 6 };
 7 int main()
 8 {
 9     struct obj up[25],down[25],sum[25];
10     int i,a,m,n,x;
11     int y,ans;
12     scanf("%d%d%d%d",&a,&n,&m,&x);
13 
14     up[1].p=1; up[1].q=0;
15     up[2].p=0; up[2].q=1;
16 
17     down[1].p=0; down[1].q=0;
18     down[2].p=0; down[2].q=1;
19 
20     sum[1].p=1; sum[1].q=0;
21     sum[2].p=1; sum[2].q=0;
22 
23     for(i=3;i<n;i++)
24     {
25         up[i].p=up[i-1].p+up[i-2].p;
26         up[i].q=up[i-1].q+up[i-2].q;
27         down[i].p=up[i-1].p;
28         down[i].q=up[i-1].q;
29         sum[i].p=sum[i-1].p+up[i].p-down[i].p;
30         sum[i].q=sum[i-1].q+up[i].q-down[i].q;
31     }
32     if((m-sum[n-1].p*a)%sum[n-1].q==0)
33     {
34         y=(m-sum[n-1].p*a)/sum[n-1].q;
35         ans=sum[x].p*a+sum[x].q*y;
36         printf("%d\n",ans);
37     }
38     else printf("No answer.\n");
39 
40     return 0;
41 }

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
游拉萨火车站
7月1日,拉萨火车站正式运营。这可是几千年难得一遇的好事,呵呵!怎么能少的了身在拉萨的我的份呢~于是下午就和项目经理一起去看看。
619 0
今天起,我们喝的百年牛奶要变了!
今天,光明乳业与阿里云达成战略合作。双方将整合优质资源,形成聚合效应,共同推动在新零售、泛电商等领域深化合作,打造引领未来商业模式的新零售标杆。
4157 0
201609-2 火车购票
201609-2 火车购票
0 0
+关注
华山青竹
一个喜欢玩代码的小青年呵呵呵
文章
问答
文章排行榜
最热
最新
相关电子书
更多
1919快喝——如何打造智能零售O2O
立即下载
天合光能-用计算 捉“光的能量”
立即下载
低代码开发师(初级)实战教程
立即下载