试题B:小球反弹(第十五届蓝桥杯省赛B组c/c++组)
试题B:小球反弹
我在刷博客的时候看见有人分享了蓝桥杯的题目,我想起了我之前大学打蓝桥杯刷题的时光,还是很怀念当时打比赛的氛围,关于这个小球反弹的题目,我感觉很有意思,我一开始也是走了好多弯路,然后去上了一个厕所,突然茅塞顿开,想到了一个很简单的方法,也看了一圈大家对这道题的结局方法,基本上以遍历枚举出结果为主,和我的思路不太一样,所有想分享给大家看一下我的想法,大家可以先看一下题目呢
错误尝试
我刚看到这个题目的时候,我最先想到的方法是通过定义y=kx+b
的方式来模拟小球反弹的运动曲线,然后通过这个曲线方程来看他到底是碰到了长方形的长还是长方形的宽,因为通过一元一次方程来模拟运动函数,基本上来说k的就两个值在变要么k=17/15
要么k=-17/15
,需要改变的只有b,每一次反弹k就是上一次的k的负数,而b=y-kx,所有只需要,每一次反弹就改变一次k和b就可以得到新的y=kx+b,但这样需要每一次都判断长方形的边,因为你要判断小球反弹的是长方形的长还是宽,这样判断就太复杂了,所有我后面放弃了这个方法
茅塞顿开后的想法
我在想这个小球反弹的时候,突然想到,每一次反弹看似还在一个长方形内,实际上,不就是对原来的长方形对折一下,形成了两个长方形吗?
如果这样想法,实际上小球的运动规矩,就是一直沿着一个方向一直一直往前走,而这个长方形就一直在复制,如果先碰到的是宽,就往右边翻转一个,如果是先碰到长,就往下复制一个长方形
那么依据这个想法就相当于我只需要计算小球从左上方一直往下走,随着长方形的翻转,一直走到了翻转复制后的大长方形的右下角,这个路程就是小球回到原点的路程,这个问题就变成了,我们需要对这个长方形向左负责多少个,向下复制多少,才能让小球刚好到底右下角,那我们假设长方形向左边复制了CopyX
个,向下复制了CopyY
个,而又因为小球往x方向运动和往y方向运动的比例是15/17,相当于我们最终得到的这个大的长方形的长宽比肯定也是要是15/17,所以得到方程
然后通过移动
然后我们知道翻转的次数肯定是一个正整数,相当于我们就是只需要对右边的分数,进行通分得到它的最小分数形式就可以,那么就是我们,如果考场上没有计算器,需要通过代码来弄,就只需写一个求解最小公因数的函数,就可以快速的化简这个分数,最终得到的结果是
那么我们就得到CopyX=1059
,CopyY=1768
,后面就用勾股定理来计算小球的运动规矩最终得到的值是dic =550162599.8851975
遗漏点
对于上面的结果大家是不是很奇怪,好像不是正确答案呀,是不是我们遗漏了什么呢,实际上遗漏的东西,就是我们最终求解的是小球从左上角到右下角的路程,而题目要求是求小球回到原点的路程,那么如果要回到原点实际上是我们刚刚求的结果X2,就可以了,相当于小球进行原路返回,我举例一个简单的例子
因此我们最终的答案是距离=1100325199.77(四舍五入)
试题B:小球反弹(第十五届蓝桥杯省赛B组c/c++组)的更多相关文章
- 第九届蓝桥杯国赛+第二天的第11届acm省赛的总结
第九届蓝桥杯国赛+第二天的第11届acm省赛的总结 25号坐的去北京的火车,10个小时的火车,然后挤了快两个小时的地铁,最终达到了中国矿业大学旁边的订的房间.12个小时很难受,晕车症状有点严重,吃了快 ...
- 第十届蓝桥杯2019年C/C++ 大学B组省赛试题
2019年第十届蓝桥杯大赛软件类省赛C/C++大学B组 试题 A:组队 本题总分:5分 [问题描述] 作为篮球队教练,你需要从以下名单中选出 1号位至 5号位各一名球员, 组成球队的首发阵容. 每位球 ...
- 第十届蓝桥杯省赛JavaB组个人题解
前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改. 试题 A: 组队 ----- 答案:490 [问题描述 ...
- 第十届蓝桥杯2019年C/C++ 大学A组省赛试题
2019年蓝桥杯第十届软件类省赛 C/C++ 大 学 A 组 试题 A: 平方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包括 1 ...
- 2019年第十届蓝桥杯省赛总结(JavaA组)
//update3.28:省一rank4,莫名进了国赛好神奇.. 记yzm10第一次体验A组(纯粹瞎水). 早闻山东的JavaA组神仙打架,进国赛都成了奢望(往年只有五个名额),因此抱着做分母的心态来 ...
- 2019年第十届蓝桥杯国赛总结(JavaA组)
JavaA组国二,可以报销了~ JA死亡之组可不是盖的,rank12的排名还是拿不到国一啊(只有五个.. 出成绩的一刻波澜不惊,毕竟去年有国一了不慌哈哈哈 不过对我来说这个结果还算意料之外吧,毕竟大三 ...
- 2019第十届蓝桥杯省赛及国赛个人总结(java-B组)
省赛: 今年省赛的题目比18年简单的多,基本都是暴力枚举.BFS之类.还记得去年在山师考蓝桥杯,我这种辣鸡连题目都没看懂.本以为蓝桥会变得越来越难,没想到今年就被打脸了.今年省赛后面三个编程大题一个没 ...
- 第十届蓝桥杯省赛-试题E: RSA 解密
试题E: RSA 解密 这里涉及到很多数论的知识:质因子分解,扩展欧几里得算法,快速幂算法,利用快速乘算法求解快速幂(mod太大导致不能直接乘,而是需要使用加法来替代乘法) 另外还需要注意扩展欧几里得 ...
- 北京师范大学第十五届ACM决赛-重现赛
Another Server 时间限制:1秒 空间限制:262144K 题目描述 何老师某天在机房里搞事情的时候,发现机房里有n台服务器,从1到n标号,同时有2n-2条网线,从1到2n-2标号,其中第 ...
- 北京师范大学第十五届ACM决赛-重现赛J Just A String (kmp算法延伸)
链接:https://ac.nowcoder.com/acm/contest/3/J 来源:牛客网 Just A String 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
随机推荐
- 本地锁 & 分布式锁
引子: 解决缓存击穿问题 synchronized (this){代码块} public synchronized Map<String,List<Catelog2Vo>> g ...
- python数组概念和实例解析
一 概念 如果我们需要一个只包含数字的列表,那么array.array比list更高效.数组支持所有跟可变序列有关的操作,包括.pop,.insert和.extend. 另外,数组还提供从文件读取和存 ...
- use shell scrpit to jlink download bin file
一 JLINK 下载 JLINK作为一个arm的调试工具,是很多基于arm芯片无法绕过去的调试和下载工具.这里有一个问题,就是该工具链接和使用需要的命令特别多,假如不做成脚本,会浪费很多时间,笔者花了 ...
- 记录--CSS 滚动驱动动画 scroll()
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 CSS 滚动驱动动画 scroll() animation-timeline 通过 scroll() 指定可滚动元素与滚动轴来为容器动画提 ...
- 在 SwiftUI 中使用 Metal Shader
简介 从 iOS 17/macOS 14 开始,SwiftUI 支持使用 Metal shader 来实现一些特效.主要提供三个 View Modifier:colorEffect. distorti ...
- elementui树形表格分页
效果图 如果你刚好需求中需要如上效果那么只需要吧代码复制过去直接用即可,注意写在nextTick中 前提是vue加elementui 代码如下 /** * 树形表格分页 * @param ...
- python实现批量运行命令行
python实现批量运行命令行 背景: 对于不同参数设置来调用同一个接口,如果手动一条条修改再运行非常慢且容易出错.尤其是这次参数非常多且长.比如之前都是输入nohup python -u exe.p ...
- 做easyexcel遇到的问题数据库采用的mybatis-plus
导入坐标 <!-- easyexcel依赖--><dependency> <groupId>com.alibaba</groupId> <arti ...
- KingbaseES 数据库逻辑优化规则
SQL 优化的过程可以分为逻辑优化和物理优化两个部分.逻辑优化主要是基于规则的优化,简称 RBO(Rule-Based Optimization).物理优化会为逻辑查询计划中的算子选择某个具体的实现, ...
- 基于UDP的服务器端/客户端
基于UDP的数据I/O函数 //成功时返回传入的字节数,失败时返回-1 ssize_t sendto (int __fd, const void *__buf, size_t __n, int __f ...