【重拾计划】[NOIP1998 提高组] 车站

news2024/11/25 7:49:27

今日题目

[NOIP1998 提高组] 车站

题目描述

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

输入格式

输入只有一行四个整数,分别表示始发站上车人数 a a a,车站数 n n n,终点站下车人数 m m m 和所求的站点编号 x x x

输出格式

输出一行一个整数表示答案:从 x x x 站开出时车上的人数。

样例 #1

样例输入 #1

5 7 32 4

样例输出 #1

13

提示

对于全部的测试点,保证 1 ≤ a ≤ 20 1 \leq a \leq 20 1a20 1 ≤ x ≤ n ≤ 20 1 \leq x \leq n \leq 20 1xn20 1 ≤ m ≤ 2 × 1 0 4 1 \leq m \leq 2 \times 10^4 1m2×104

解题思路

手推找规律,演草纸图片如下,其中涉及斐波那契数列,用 f ( x ) f(x) f(x) 表示

一张演草纸
找到了 当 n ⩾ 4 n\geqslant4 n4 时 , n n n m m m 的关系:
n n n 站后车上的人数 m m m 的表示如下
m = ( 2 + h [ n − 4 ] ) ∗ a + h [ n − 3 ] ∗ m u l m=(2+h[n-4])*a+h[n-3]*mul m=(2+h[n4])a+h[n3]mul(其中 h [ t ] h[t] h[t] 表示斐波那契数列前 t t t 项和, m u l mul mul 表示倍数)
剩下的就是简单的数列问题了。
其他的小细节要注意处理。

代码实现

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int f[30],h[30],p[30]; 
int a,n,m,x,ans;
void checkx(int mul){
	if(x>=4) ans=(2+h[x-4])*a+h[x-3]*mul;
	else if(x==1||x==2) ans=a;
	else if(x==3) ans=2*a;
}
int main()
{
	f[1]=1; f[2]=1;
	h[1]=1; h[2]=2;
	for(int i=3;i<=25;i++)
	{
		f[i]=f[i-1]+f[i-2];
		h[i]=h[i-1]+f[i];
	}
	
	cin>>a>>n>>m>>x;
	if(n>=5){
		int mul=0;
		mul=(m-(2+h[n-5])*a)/h[n-4];
		checkx(mul);
	}
	else checkx(0);
	cout<<ans<<endl;
	return 0;
}  

反思总结

做这种数学题的时候多找找数学规律,节约时间空间,代码量小,简单快捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python字典:揭秘无序元素的奥秘之旅

前言 在编程中&#xff0c;数据的组织和管理是一个关键的方面。对于处理和操作数据&#xff0c;Python 提供了许多强大的数据结构&#xff0c;其中最常用和灵活的之一就是字典(Dictionary)。 无论您是初学者还是有经验的开发者&#xff0c;掌握字典的基本知识是非常重要的。本…

解决PyInstaller打包selenium脚本时弹出driver终端窗口

解决PyInstaller打包selenium脚本时弹出driver终端窗口 找到service.py C:\Users\XXX\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\common\service.py添加creationflags 在第77行添加: creationflags134217728使用PyInstaller打包 pyinstaller -F -w -…

8.2.3 【Linux】xz, xzcat/xzmore/xzless/xzgrep

8.3 打包指令&#xff1a; tar 8.3.1 tar 其实最简单的使用 tar 就只要记忆下面的方式即可&#xff1a; 压 缩&#xff1a;tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 查 询&#xff1a;tar -jtv -f filename.tar.bz2 解压缩&#xff1a;tar -jxv -f filename…

Lesson2-1:OpenCV基本操作

图像的基础操作 学习目标 掌握图像的读取和保存方法能够使用OpenCV在图像上绘制几何图形能够访问图像的像素能够获取图像的属性&#xff0c;并进行通道的分离和合并能够实现颜色空间的变换 1 图像的IO操作 这里我们会给大家介绍如何读取图像&#xff0c;如何显示图像和如何…

uniapp-设置全屏

需求&#xff1a;就是想要小程序不受限制&#xff0c;可以把图片或者文字全屏的展示&#xff0c;如下图 vue代码如下&#xff1a; <template><view class"content"><image class"image-bg" src"/static/logo.png" /><imag…

Python GUI编程利器:Tkinker中的微调节器和滑块(6)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 实现下面效果&#xff1a; 微调节器(Spinbox类) 微调节器可以通过箭头调整所需的数值。 创建微调节器对象语法格式…

ChatGPT助力校招----面试问题分享(十)

1 ChatGPT每日一题&#xff1a;阻抗匹配的方法有哪些 问题&#xff1a;阻抗匹配是什么 ChatGPT&#xff1a;阻抗匹配是一种电路设计技术&#xff0c;用于确保电路中各个组件之间的电阻、电感和电容等参数相互匹配&#xff0c;以最大程度地传输信号或功率 当阻抗不匹配时&…

7/2~7/4学习成果总结

这几天初步的了解了一下Java&#xff0c;然后写了几道题&#xff1a; 下面总结一下学Java的时候遇到的一易错的小问题以及总结&#xff1a; 1. java里面只能在一个源文件里有一个public类&#xff0c;但是入口main那个可以理解为public static是一个整体也就是不属于public&a…

『C/C++养成计划』C++中的静态库和动态库|GCC|Makefile|CMake学习

C中的静态库和动态库|GCC|Makefile|CMake学习&#xff01; 文章目录 一. 什么是库二. 静态库1.1. 静态库生成1.2. 静态库制作举例1.2.1 准备测试程序1.2.2 生成静态库 1.3. 静态库的使用 三. 动态库3.1. 为什么需要动态库3.2. 生成动态链接库3.3. 动态库制作举例3.4. 动态库的…

【JUC并发编程】Callable接口创建线程

一、介绍 与继承Thread类和实现Runnable接口两种创建线程方式的区别 ① Callable接口可以有返回值 ② Callable接口可以抛出异常 ③ 执行方法不同&#xff0c;call()方法和run()方法 二、代码演示 继承Thread类和实现Runnable接口的方式创建线程 package callable;import java…

celery Periodic Tasks 周期任务

celery Periodic Tasks 周期任务 https://docs.celeryq.dev/en/latest/userguide/periodic-tasks.html /home/mike/work/celery-5.3.1/examples/periodic-tasks myapp.py """myapp.pyUsage::# The worker service reacts to messages by executing tasks.(w…

pip安装指定包,找不到如何解决?

背景&#xff1a;现如今&#xff0c;在跑神经网络的时候&#xff0c;需要配置一些开源项目从而需要指定一些特定环境是必不可少的一个步骤&#xff0c;但是很多时候使用pip安装包的时候&#xff0c;总是找不到需要的版本。比如&#xff0c;今天需要配置open3d 0.15.1版本的环境…

群晖 nas 升级内存 手记(DS423+)

题外话&#xff1a; 我原来用的是群晖DS218&#xff0c;也用了5年了&#xff0c;今年5月份突然不能开机了&#xff0c;感觉故障不大&#xff0c;群晖官方又不好联系&#xff0c;非常麻烦。只好邮递到北京一家所谓的维修群晖的维修点&#xff0c;他们说维修费最多不超过200元&am…

Visual studio 快捷键(个人记录加深印象)

1、CtrlK 后 Ctrlx 插入代码片段快捷键&#xff08;或 编辑”>“IntelliSense”>“插入代码片段&#xff09; 注&#xff08;摘抄&#xff09;&#xff1a;该列表包含用于创建类、构造函数、for 循环、if 或 switch 语句等的代码片段

java定义数组的三种类型总结

三种定义数组的格式如下&#xff1a; int[] arr1new int[10]; int[] arr2{1,2,3,6}; int[] arr3new int[]{1,2,3,4,5,6,7,22}; 注意&#xff1a;数组的length是一个属性&#xff0c;而字符串的length()是一个方法了&#xff01;&#xff01;&#xff01;虽然都是求的他们各…

自定义 MVC 框架思想

目录 一、MVC设计模式 1. 什么是MVC 2. 三层架构与MVC的区别 二、自定义MVC框架 1. 为什么要学习自定义MVC框架 2. 自定义MVC的工作原理 3. 自定义MVC框架的优势 三、自定义MVC实例流程 1. mvc三层架构的弊端 2. 自定义MVC的工作流程 2.1 子控制器&#xff08;…

【flutter滑动拼图验证码】

Java后台使用aj_captcha插件&#xff0c;提供/captcha/get&#xff08;获取captcha底图和拼块图片&#xff09;、/captcha/check&#xff08;验证拼图偏移量&#xff09;这两个接口。并且这个插件在GitHub上有源码。 1.先准备好aj_captcha的工具类&#xff1a; import dart:co…

Linux指令与权限

本期我们来学习Linux的权限内容 目录 Linux权限 1.认识Linux下用户的分类 2.什么是权限 3.没有权限是什么现象 4.权限的修改问题 chmod chown chgrp umask 粘滞位 file指令 我们在使用xshell登录后&#xff0c;会有下面的东西 我们来介绍一下&#xff0c;以我的登录…

19. WebGPU —计算着色器(compute shader)

WebGPU 是即将推出的 Web API&#xff0c;可提供对GPU的底层控制并用于通用目的计算任务 。 我对计算机图形不是很有经验。我通过阅读有关如何使用 OpenGL 构建游戏引擎的教程了解了 WebGL 的点点滴滴&#xff0c;并通过观看 Inigo Quilez 在 ShaderToy 上仅使用着色器而不使用…

最长连续序列

题目链接 最长连续序列 题目描述 注意点 0 < nums.length < 100000不要求序列元素在原数组中连续 解答思路 要想实现时间复杂度为 O(n) 的算法解决此问题&#xff0c;关键是数字不能多次遍历&#xff0c;所以首先要对数组进行去重&#xff1b;然后为什么防止某个元素…