题目描述
火车从始发站(称为第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