(Java实现) 车站
JAVA 实现
2023-09-14 08:58:18 时间
题目描述
火车从始发站(称为第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);
}
}
相关文章
- Java main方法
- java snmp walk,SNMPWALK 用法详解
- java backoff_Java BackOff类代码示例
- Java冒泡排序实现
- Java线程池详解「建议收藏」
- Java中的八种基本数据类型「建议收藏」
- Java面向对象的基本特征有哪些?三大基本特征「建议收藏」
- 堆排序(Java语言实现)
- JAVA数据库连接池_java与数据库的连接怎么实现
- java 文件上传到服务器_Java上传文件到服务器端的方法「建议收藏」
- java数组 初始化_用Java初始化数组「建议收藏」
- jmeter并发测试1000_java如何提高并发
- 大数据必学Java基础(九十三):JDBC完成CURD
- CompletableFuture Java多线程操作
- 单个用户及Ip请求频率限制思路(附java实现)
- Checked Exception | Java语言设计者的失误?
- Java 近期新闻:MicroProfile 6.0、Kotlin 1.8、Spring Framework 升级
- Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载详解编程语言
- 时间设置Java操作Redis实现有效数据过期设置(redisjava过期)
- 使用Redis和Java实现自动过期(redisjava过期)
- 时间解决Java操作Redis的设置过期时间问题(redisjava过期)
- 处理解决Redis中Java实现的过期处理(redisjava过期)
- 机制Redis Java过期处理机制实现(redisjava过期)
- 时间解决Redis Java中过期时间的问题(redisjava过期)
- 时间设置如何正确设置Redis Java的过期时间(redisjava过期)
- 策略Java Redis实现的过期策略分析(redisjava过期)
- Java锁表与Oracle数据库协调实现数据安全(java锁表oracle)
- 结合JVM源码浅谈Java类加载器
- Java运行时多态性的实现
- 用RationalRose逆向工程(java)生成类图(教程和错误解决)
- java生成图片验证码示例程序
- java从mysql导出数据的具体实例
- java实现计算周期性提醒的示例
- 基于Java实现的图的广度优先遍历算法