测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41022. 上车人数

填空题 中等

题目描述

上车人数

题目描述

公共汽车从始发站(称为第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<stdio.h> #include<stdlib.h> struct text//方程系数 { int d; int b; }; int main() { int a,n,m,x,C,S; int i; scanf("%d%d%d%d",&a,&n,&m,&x); struct text up[n],sum[n];//上车人数方程的系数、总人数方程的系数 for(i=0;i<n-1;i++)//通过循环,直接计算出第n-1车站时的总人数方程系数 { if(i<2)//车站数小于2时 { up[0].d=0; up[0].b=a; up[1].d=1; up[1].b=0; sum[0].d=0; sum[0].b=a; sum[1].d=0; sum[1].b=a; } else//车站数大于2时,开始有规律 { up[i].d=up[i-1].d+up[i-2].d; up[i].b=up[i-1].b+up[i-2].b; sum[i].d=sum[i-1].d+up[i-2].d; sum[i].b=sum[i-1].b+up[i-2].b; } } C=(m-sum[n-2].b)/(sum[n-2].d);//已知总人数,返推c的值 S=C*sum[x-1].d+sum[x-1].b; printf("%d",S); return 0; }
上一题 下一题