标题概述:
思绪讲解:
在知道速度的前提下,我们可以求解时间t来盘算旅程s=v*t。那么时间怎么求?
因速度分解为dx和dy,那么我们将视角转换到x和y方向上,假设在x方向上一共运动了p次来回,y方向上运动了q次来回,那么就偶然间t,使得
x方向上: t * dx = 2 * x * p (x为长)
y方向上: t * dy = 2 * y * q (y为高)
我们将两式进行除法运算:
y * dx/ x * dy = p / q
得到了p和q的关系比例,既得到在x和y方向来回次数的比值,因为小球大概多次回到起点,(在不约分的环境下)那么这个p和q存在一个最大公约数g,这个最大公约数就是小球回到起点的次数。标题要求第一次回到起点,既将p和q除去最大公约数g,得到第一次回到起点时,在x和y方向上来回的次数p和q。
得到次数后,使用上述公式算出时间t,末了旅程s = sqrt(dx*dx+dy*dy)* t。留意末了效果保存俩位小数。
代码:
我这里用的是dev-c++
- #include<iostream>
- #include<cmath>
- using namespace std;
- int gcd(int a, int b){
- return b == 0 ? a : gcd(b,a%b);
- }
- int main(){
- int x = 343720;
- int y = 233333;
- int dx = 15;
- int dy = 17;
- int p = y * dx;
- int q = x * dy;
- int g = gcd(p,q);
- p /= g;
- q /= g;
- int t = 2*x*p / dx;
- double s = 1.0 * sqrt(dx*dx+dy*dy)*t;
- printf("%.2f",s);
- return 0;
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |