首页 > 其他分享 >上下火车

上下火车

时间:2022-12-21 15:00:42浏览次数:28  
标签:下车 int 始发站 上下 上车 人数 scanf 火车

题目描述

火车从始发站(称为第1站)开出,在始发站上车的人数为w,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,都是t,因此在第2站开出时(即在到达第3站之前)车上的人数保持为w人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n-1站),都满足此规律。现给出的条件是:共有n个车站(1≤n≤100),始发站上车的人数为w,最后一站下车的人数是m(全部下车)。需要求解x站开出时车上的人数是多少。小南通过统计发现了每一站开车时车上的人数与始发站人数w以及第2站上车人数t之间的规律,通过这个规律他很快得到了答案,你知道他是怎么实现的吗?
 

输入

单样例。每个测试文件只包含一组测试数据,输入的一行包括四个整数w、n、m和x(均不超过int数据类型,其中1≤n≤100)。


输出

对于输入的一组测试数据,输出一个整数,代表从x站开出时车上的人数。


样例输入 Copy

5 7 32 4

样例输出 Copy

13
 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int t,w,n,m,i,k,x;
 6     int a[100],b[100];
 7     int num;
 8     scanf("%d",&w);    
 9     scanf("%d",&n);
10     scanf("%d",&m);
11     scanf("%d",&x);
12     a[0]=w,a[1]=0,a[2]=w,a[3]=0,a[4]=w;
13     for(i=5;i<n;i++)
14     {
15         a[i]=a[i-1]+a[i-2];
16     }
17     b[0]=0,b[1]=0,b[2]=0,b[3]=1;
18     for(k=4;k<n;k++)
19     {
20         b[k]=b[k-1]+b[k-2];   
21     }
22     int sum1=0,sum2=0;
23     for(i=0;i<n-1;i++) sum1+=a[i];
24     for(k=0;k<n-1;k++) sum2+=b[k];
25     t=(m-sum1)/sum2;
26     sum1=0,sum2=0;
27     for(i=0;i<x;i++) sum1+=a[i];
28     for(k=0;k<x;k++) sum2+=b[k];
29     num=sum1+sum2*t;
30     printf("%d",num);
31     return 0;
32 }

 

标签:下车,int,始发站,上下,上车,人数,scanf,火车
From: https://www.cnblogs.com/messing1758954258/p/16996291.html

相关文章