【NOIP提高组】 自由落体

【NOIP提高组】 自由落体


💐The Begin💐点点关注,收藏不迷路💐

在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1。在地面上有一个小车(长为 L,高为 K,距原点距离为 S1)。已知小球下落距离计算公式为 d=1/2g(t^2),其中 g=10,t 为下落时间。地面上的小车以速度 V 前进。

如下图:

在这里插入图片描述

小车与所有小球同时开始运动,当小球距小车的距离 <= 0.00001 时,即认为小球被小车接受(小球落到地面后不能被接受)。

请你计算出小车能接受到多少个小球。

输入

键盘输人:
H,S1,V,L,K,n (l<=H,S1,V,L,K,n <=100000)

输出

小车能接受到的小球个数。

样例输入

5.0 9.0 5.0 2.5 1.8 5

样例输出

1

用 C 语言实现的代码:

#include <stdio.h>
#include <math.h>

// 定义极小数 eps 和重力加速度常量 g
const double eps = 1e-4;
const double g = 10;

// 判断能否接住小球的函数
bool check(double ceilH, double carS, double carV, double carL, double carH, double ballP) {
    // 根据公式计算接住小球允许的最小车速
    double minV = (carS - ballP - eps) * sqrt(g / 2 / ceilH);
    // 根据公式计算接住小球允许的最大车速
    double maxV = (carS + carL - ballP + eps) * sqrt(g / 2 / (ceilH - carH));
    // 判断实际车速是否在允许的车速范围内
    return minV <= carV && carV <= maxV;
}

// 主函数中的工作函数
void process() {
    double ceilH, carS, carV, carL, carH, numB;
    int count = 0;
    // 输入天花板高度、车距原点距离、车速、车长、车高、小球数量
    scanf("%lf %lf %lf %lf %lf %lf", &ceilH, &carS, &carV, &carL, &carH, &numB);
    for (double i = 0; i < numB && i <= carS; i++) {
        // 对每个小球判断是否能被接住
        count += check(ceilH, carS, carV, carL, carH, i)? 1 : 0;
    }
    // 输出能接住的小球个数
    printf("%d\n", count);
}

int main() {
    int t = 1;
    // 循环次数,这里设置为 1
    while (t--) {
        // 执行工作函数
        process();
    }
    return 0;
}

用 C++实现的代码:

#include <iostream>
#include <cmath>

// 定义极小数 eps 和重力加速度常量 g
const double eps = 1e-4;
const double g = 10;

// 判断能否接住小球的函数
bool check(double ceilH, double carS, double carV, double carL, double carH, double ballP) {
    // 根据公式计算接住小球允许的最小车速
    double minV = (carS - ballP - eps) * sqrt(g / 2 / ceilH);
    // 根据公式计算接住小球允许的最大车速
    double maxV = (carS + carL - ballP + eps) * sqrt(g / 2 / (ceilH - carH));
    // 判断实际车速是否在允许的车速范围内
    return minV <= carV && carV <= maxV;
}

int main() {
    double ceilH, carS, carV, carL, carH, numB;
    int count = 0;
    // 输入天花板高度、车距原点距离、车速、车长、车高、小球数量
    std::cin >> ceilH >> carS >> carV >> carL >> carH >> numB;
    for (double i = 0; i < numB && i <= carS; i++) {
        // 对每个小球判断是否能被接住
        count += check(ceilH, carS, carV, carL, carH, i)? 1 : 0;
    }
    // 输出能接住的小球个数
    std::cout << count << std::endl;
    return 0;
}

用 Java 实现的代码:

import java.util.Scanner;

class Main{
    // 定义极小数 eps 和重力加速度常量 g
    private static final double eps = 1e-4;
    private static final double g = 10;

    // 判断能否接住小球的方法
    public static boolean check(double ceilH, double carS, double carV, double carL, double carH, double ballP) {
        // 根据公式计算接住小球允许的最小车速
        double minV = (carS - ballP - eps) * Math.sqrt(g / 2 / ceilH);
        // 根据公式计算接住小球允许的最大车速
        double maxV = (carS + carL - ballP + eps) * Math.sqrt(g / 2 / (ceilH - carH));
        // 判断实际车速是否在允许的车速范围内
        return minV <= carV && carV <= maxV;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double ceilH, carS, carV, carL, carH, numB;
        int count = 0;
        // 输入天花板高度、车距原点距离、车速、车长、车高、小球数量
        ceilH = scanner.nextDouble();
        carS = scanner.nextDouble();
        carV = scanner.nextDouble();
        carL = scanner.nextDouble();
        carH = scanner.nextDouble();
        numB = scanner.nextDouble();
        for (double i = 0; i < numB && i <= carS; i++) {
            // 对每个小球判断是否能被接住
            count += check(ceilH, carS, carV, carL, carH, i)? 1 : 0;
        }
        // 输出能接住的小球个数
        System.out.println(count);
    }
}

用 Python 实现的代码:

eps = 1e-4
g = 10

# 判断能否接住小球的函数
def check(ceilH, carS, carV, carL, carH, ballP):
    # 根据公式计算接住小球允许的最小车速
    minV = (carS - ballP - eps) * (g / 2 / ceilH)**0.5
    # 根据公式计算接住小球允许的最大车速
    maxV = (carS + carL - ballP + eps) * (g / 2 / (ceilH - carH))**0.5
    # 判断实际车速是否在允许的车速范围内
    return minV <= carV and carV <= maxV

ceilH, carS, carV, carL, carH, numB = map(float, input().split())
count = 0
# 对每个小球判断是否能被接住
for i in range(int(numB)):
    if i <= carS and check(ceilH, carS, carV, carL, carH, i):
        count += 1
# 输出能接住的小球个数
print(count)

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ECMAScript 标准详解

ECMAScript 是 JavaScript 的基础标准&#xff0c;由 Ecma International 制定。它定义了脚本语言的语法和行为。自 1997 年以来&#xff0c;ECMAScript 经过了多个版本的迭代&#xff0c;每个版本都对 JavaScript 产生了深远的影响。 1. ECMAScript 1 (ES1) 发布时间&#xf…

react18中的受控与非受控组件及ref的使用

受控与非受控组件 受控组件,基于修改 state 的值,修改组件内部的状态&#xff0c;来实现页面的更新&#xff0c;推荐使用 非受控组件&#xff0c;基于 ref 获取 dom 的值&#xff0c;来实现页面的更新,不推荐使用,偶尔特殊的场景会使用 给需要获取的元素设置 ref“xxx”,后期基…

Pytorch学习--如何下载及使用Pytorch中自带数据集,如何把数据集和transforms联合在一起使用

一、标准数据集使用 pytorch官网–标准数据集 这里以CIFAR10数据集为例&#xff1a;CIFAR10 下载数据集 代码&#xff1a; import torchvision train_datatorchvision.datasets.CIFAR10(root"datasets",trainTrue,downloadTrue) test_datatorchvision.datasets.…

【实用知识】Spring Boot 优雅捕捉异常的几种姿势

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

计算机网络:数据链路层 —— 虚拟局域网 VLAN

文章目录 局域网虚拟局域网 VLAN虚拟局域网 VLAN 概述实现机制IEEE 802.1Q帧以太网交换机的接口类型Access 接口Trunk 接口Hybrid 接口不进行人为的VLAN划分划分两个不同VLANTrunk接口去标签后进行转发Trunk接口直接转发 局域网 局域网&#xff08;Local Area Network&#xf…

ICP之点云特征计算

这次我们来聊一下点云的特征计算方法&#xff0c; 主流的有两类 1&#xff1a;基于直方图的特征计算 2&#xff1a;基于签名的特征计算 这次我将介绍基于直方图的方式。 基于直方图的特征方法中&#xff0c;PFH&#xff08;Point Feature Histograms&#xff09;和FPFH&#x…

vue3项目中引入阿里图标库

开篇 本篇的主题是在vue3项目中引入阿里图标库 步骤 注册阿里图标库账号(阿里图标)&#xff0c;并创建项目 将图标加入项目中 将需要的图标先加入购物车&#xff0c;随后加入到项目中 生成项目代码 在项目中生成项目代码&#xff0c;便于后续复制到vue项目中 ## 在vue3项目…

基于Ubuntu24.04,下载并编译Android12系统源码 (一)

1. 前言 1.1 编译源码可以干什么 定制Android系统将最新版本的Android系统刷入到自己的Android设备中将整个系统源码导入到Android Studio中&#xff08;可以不用编译源码来实现&#xff09;。 只要有对应的Android源码版本的android.iml和android.ipr文件&#xff0c;就可以…

使用 v-html 指令渲染的标签, 标签内绑定的 click 事件不生效

背景 在项目开发中&#xff0c;实现用户友好的输入交互是提升用户体验的关键之一。例如&#xff0c;在客服对话框中&#xff0c;其中有包含多个快捷选项用于快速问答&#xff0c;每个快捷选项都是一个可点击的按钮&#xff0c;并需要绑定点击事件来执行相应操作。然而&#xf…

JavaSE笔记2】面向对象

目录 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this 四、构造器 五、封装 六、实体Javabean(实体类) 1. 是什么&#xff1f; 2. 实体类用来干什么&#xff1f; 七、成员变量和局部变量的区别 一、深刻认识面向对象 二、对象在计算机中的执行原理 三、this Java中…

LINUX1.3

cp&#xff08;复制&#xff09;: 将需要复制的文件或目录&#xff08;源&#xff09;重建一份&#xff0c;并保存为新的文件或目录 cp 源文件 -------目标地址 在当前文件夹时&#xff1a; cp 源文件 &#xff08;要改名&#xff09;------目的地址&#xff08;可以改名或…

Redis高频面试题

一、Redis有什么好处? 高性能:Redis是一个基于内存的数据存储系统,相比于传统的基于磁盘的数据库系统,它能够提供更高的读写性能。支持丰富的数据类型:Redis支持多种数据结构,包括字符串、哈希、列表、集合、有序集合等,这使得它可以用于多种不同的应用场景。持久化:Re…

4.2-7 运行MR应用:词频统计

文章目录 1. 准备数据文件2. 文件上传到HDFS指定目录2.1 创建HDFS目录2.2 上传文件到HDFS2.3 查看上传的文件 3. 运行词频统计程序的jar包3.1 查看Hadoop自带示例jar包3.2 运行示例jar包里的词频统计 4. 查看词频统计结果5. 在HDFS集群UI界面查看结果文件6. 在YARN集群UI界面查…

基于Python和OpenCV的疲劳检测系统设计与实现

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…

【Web开发】什么是Nuxt? 利用Nuxt快速搭建前端项目

Nuxt官网&#xff1a;https://nuxt.com/ 启动一个Nuxt项目 在vscode的项目文件终端运行以下命令&#xff1a; npx nuxilatest init <my-app>npm installnpm run dev然后就启动了一个Nuxt项目 安装Nuxt UI Nuxt UI官网&#xff1a;https://ui.nuxt.com/ npx nuxilates…

【acwing】算法基础课-搜索与图论

目录 1、dfs(深度优先搜索) 1.1 排列数字 1.2 n皇后问题 搜索顺序1 搜索顺序2 2、bfs(广度优先搜索) 2.1 走迷宫 2.2 八数码 3、树与图的存储 4、树与图的遍历 4.1 树的重心 4.2 图中点的层次 5、拓扑排序 6、最短路问题 6.1 朴素Dijkstra算法 6.2 堆优化Dijks…

JAVA基础:集合 (学习笔记)

集合 什么是集合&#xff1f; 一种引用数据类型&#xff0c;可以存储多个数据 为什么要学习集合&#xff1f; 数组的缺点&#xff1a; &#xff08;1&#xff09;空间长度不可以改变。 &#xff08;2&#xff09;没办法获得数组中真实的元素个数。 &#xff08;3&#xff…

江协科技STM32学习- P22 实验-ADC单通道/ADC多通道

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

『 Linux 』网络传输层 - TCP (一)

文章目录 TCP协议TCP数据段格式TCP确认应答机制TCP流量控制 TCP协议 TCP协议(Transmission Control Protocol , 传输控制协议) 是互联网协议套件中的核心协议之一; 主要用于确保数据在网络上的可靠传输,其具有以下特点: 面向连接 在数据传输前,TCP需要在通信双方之间建立一个连…

MySQL的group_concat函数:将分组中的多个值连接成一个字符串的聚合函数

MySQL的group_concat函数&#xff1a;将分组中的多个值连接成一个字符串的聚合函数 主要作用说人话解释举个&#x1f330; 主要作用 可以将同一组内的多个值合并为一个由指定分隔符分隔的字符串&#xff0c;简化数据展示和分析。 说人话解释 group_concat()会计算哪些行属于…