题目描述

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

输入

每个测试文件只包含一组测试数据,每组输入四个整数a、n、m和x。

输出

对于每组输入数据,输出从x站开出时车上的人数。

分析:

手动推一下规律可以得到下表:

上图中的b是设第二站上车b人,下车b人。



可以发现从第4项开始,净增加人数中的a的系数其实是Fibonacci数列,b的系数也是类似Fibonacci数列一直累加,用两个数组f1和f2分别记录两个系数,而当前总人数其实就是净增加人数的累加,求得总人数,就可以得到未知数b,然后再根据第x站a,b的系数,即可求得x站的人数。

import java.util.Scanner;

public class shangxiachewenti {
public static int count = 0,a = 0;
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
a = sc.nextInt();//开车时的人数
int n = sc.nextInt();//一共经过的站数
int m=sc.nextInt();//最后一站的下车人数
int x =sc.nextInt();//开出x站时车上的人数
int b = 0;
int [] f1 = new int [n];
int [] f2 = new int [n-1];
f1[0]=1; f2[0]=0;
f1[1]=0; f2[1]=0;
f1[2]=1; f2[2]=0;
f1[3]=0; f2[3]=1;
int sum1=2;
int sum2=1;
for (int i = 4; i < f2.length; i++) {
f1[i]=f1[i-1]+f1[i-2];
sum1+=f1[i];
f2[i]=f2[i-1]+f2[i-2];
sum2+=f2[i];
}
for (int i = 1; i <100; i++) {
if(m==sum1*a+sum2*i){
b=i;
break;
}
}
int count1 = 0;
int count2 = 0;
for (int i = 0; i < x; i++) {
count1+=f1[i];
count2+=f2[i];
}
int sum = count1 * a+count2*b;
System.out.println(sum);
} }

最新文章

  1. [LeetCode] Number of Connected Components in an Undirected Graph 无向图中的连通区域的个数
  2. ThreadStart 与ParameterizedThreadStart的区别
  3. 【转】Wireshark基本用法
  4. Mac下搭建hexo
  5. web.xml 中的listener、 filter、servlet 加载顺序及其详解
  6. swift学习记录之代理
  7. python Flask :TypeError: &#39;dict&#39; object is not callable
  8. nodejs之获取客户端真实的ip地址+动态页面中引用静态路径下的文件及图片等内容
  9. Unity 3D 关于给APK包加广告的流程
  10. Java集合——Map接口
  11. 代码以兼容高亮方式发布.xml
  12. Java-WebSocket
  13. NETBSD-DTARCE
  14. iOS--NSAttributedString使用介绍
  15. 使用ToUpperInvariant避免使用ToUpper
  16. ceph 参数说明&lt;转&gt;
  17. Entity Framework6使用SQL Server Compact免安装部署
  18. [转载]PS各个工具的字母快捷键和英文全名
  19. 在动态链接库dll中弹出对话框
  20. java 日志框架总结

热门文章

  1. Spring 循环引用(三)源码深入分析版
  2. 【Spark】通过创建DataFrame读取不同类型文件内容
  3. 【HBase】协处理器是什么?又能干什么?怎么用?
  4. Day_11【集合】扩展案例1_遍历打印学生信息,获取学生成绩的最高分,获取成绩最高的学员,获取学生成绩的平均值,获取不及格的学员数量
  5. 武装你的WEBAPI-OData便捷查询
  6. python 基础知识6-文件操作
  7. angular js 页面修改数据存入数据库
  8. easytornado
  9. docker安装之后的配置各种坑
  10. spark机器学习从0到1逻辑斯蒂回归之(四)