小球反弹(蓝桥杯)

文章目录

小球反弹

【问题描述】

有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左上角顶点有一小球(无视其体积),其初速度如图所示且保持运动速率不变,分解到长宽两个方向上的速率之比为 dx : dy = 15 : 17。小球碰到长方形的边框时会发生反弹,每次反弹的入射角与反射角相等,因此小球会改变方向且保持速率不变(如果小球刚好射向角落,则按入射方向原路返回)。从小球出发到其第一次回到左上角顶点这段时间里,小球运动的路程为多少单位长度?答案四舍五入保留两位小数。


【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个小数,在提交答案时只填写这个小数,填写多余的内容将无法得分。

答案:1100325199.77

解题思路

这题有点像中学物理题,先将速度分解为x方向vx和y方向vy,小球在x方向出发又返回原点的距离为343720 * 2,小球在y方向出发又返回原点的距离为233333 * 2,因为小球在x方向和y方向的速率比恒定: v x v y = 15 17 \frac{vx }{vy}=\frac{15}{17} vyvx=1715,所以小球在相同时间内走过的路程也恒定: d x d y = 15 17 \frac{dx }{dy}=\frac{15}{17} dydx=1715,因此我们只需要找到下一个i倍的dx比上j倍的dy等于15比17( i ∗ d x j ∗ d y = 15 17 \frac{i*dx }{j*dy}=\frac{15}{17} j∗dyi∗dx=1715→ i ∗ 17 ∗ d x = j ∗ d y ∗ 15 i*17*dx=j*dy*15 i∗17∗dx=j∗dy∗15)就可以知道小球再一次返回到了原点

求出小球再一次返回原点的 i ∗ d x i*dx i∗dx和 j ∗ d y j*dy j∗dy后,根据三角形的勾股定理即可求出总路程

模拟

cpp 复制代码
#include<bits/stdc++.h> // 包含标准库,bits/stdc++.h是为了让编译器包含所有标准库的头文件,这在竞赛编程中很常见,但不推荐在生产代码中使用。
using namespace std; // 使用标准命名空间,允许我们直接使用cout、endl等,而不需要std::

typedef long long ll; // 定义一个类型别名ll,代表long long,用于表示可能会非常大或非常小的整数。

int main() // 主函数的开始
{
  ll c=343720*2; // 计算长方形长边的两倍长度,因为小球在长边反弹时,每次都会走过两倍的长度。
  ll k=233333*2; // 计算长方形宽边的两倍长度,原因同上。

  for(ll i=1; i<=10000; i++) // 第一层循环,从1遍历到10000,代表小球在长边上的反弹次数。
  {
    for(ll j=1; j<=10000; j++) // 第二层循环,从1遍历到10000,代表小球在宽边上的反弹次数。
    {
      if(i*17*c == j*15*k) // 检查当前的i和j是否满足水平路程与垂直路程的比例为15:17,并且是长和宽的偶数倍。
      {
        printf("%.2f", sqrt((i*c)*(i*c) + (j*k)*(j*k))); // 如果满足条件,计算小球走过的总路程,使用sqrt函数计算直角三角形的斜边长度,即总路程。保留两位小数。
        return 0; // 打印结果后,结束程序。
      }
    }
  }
  return 0; // 如果没有找到满足条件的i和j,也结束程序。在实际问题中,这意味着10000的上限不足以找到解决方案,可能需要增加上限或改变方法。
}
相关推荐
RuoZoe6 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
aqiu1111116 小时前
【LeetCode 902】最大为 N 的数字组合 - 详细题解与数位组合思路
数据结构·算法·leetcode·蓝桥杯·数位dp
鱼子星_7 小时前
【C++】继承和多态(上)
c++·笔记
郝学胜-神的一滴9 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
码匠许师傅9 小时前
【设计模式精讲】22.中介者模式(Mediator)
c++·设计模式·软件工程·uml·中介者模式
爱吃巧克力的程序媛11 小时前
main.cpp注册 C++ 类到 QML 元对象系统
c++·qt
YYYing.11 小时前
【C++进阶系列 (二)】关于线程堆栈的那些事——函数调用过程
开发语言·c++·函数·线程堆栈
键盘会跳舞13 小时前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁
HugoStudio_SWAN13 小时前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
jimy113 小时前
C++ 的 “移动语义”——Move Semantics
开发语言·c++