15612953885 题解分享 · 2024/5/4
小球反弹(结果填空) - 题解
设矩形长为x,高为y小球最终横向路程为2X的整数倍(小球无论走多少次最后都要回到横向起点),最终纵向路程为2y的整数倍(同理),可得1.Sx=k12x,Sy=k22y。由于速度之比是dx:dy=15:17,可认为是15m/s与17m/s。注意到时间t与S的关系为:Sx与Sy用了同样的时间t,可知2.dx t=Sx,dyt=Sy( 无论走了多少次,反弹多少,速度不变都是匀速,公式成立),由式1.2.可推出k1与k2之比。又dx=15,可算出时间t,Sx,Sy,总路程由勾股定理可得S=sqrt(Sx方+Sy方)。 源代码如下: ``` #include using namespace std; int main() { int fenzi=15*233333; int fenmu=17*343720; int g=__gcd(fenzi,fenmu); fenzi/=g; fenmu/=g; cout<<fenzi<<"/"<<fenmu<<"\n"; double t=2*1059*343720/15; cout<<t<<"\n"; double s=sqrt((15*t)*(15*t)+(17*t)*(17*t)); printf("%.2lf",s); } ```
查看全文
1 0 1 10
15612953885 题解分享 · 2024/5/4
小球反弹(结果填空) - 题解
C语言版 ``` #include int main() { int sx=15*233333,sy=17*343720,t,i; double s,k1,k2; if(sx<sy) t=sx; for(i=sx;i>0;i--) { if(sx%i==0&&sy%i==0) break; } k1=sx/i,k2=sy/i; s=sqrt((k1*2*343720)*(k1*2*343720)+(k2*2*233333)*(k2*2*233333)); printf("%.2lf",s); } ```
查看全文
0 0 1 5
yuri01 题解分享 · 2025/2/11
小球反弹(结果填空) - 题解
```cpp // https://dashoj.com/d/lqbproblem/p/196 #include <bits/stdc++.h> using namespace std; typedef long long ll; ll dx = 15, dy = 17; ll width = 343720 * 2, height = 233333 * 2; ll gcd(ll a, ll b) { // 最大公因数 if (b == 0) return a; return gcd(b, a % b); } ll lcm(ll a, ll b) { // 最小公倍数 return a / gcd(a, b) * b; } int main() { cout.precision(2); cout << fixed; ll dt = lcm(dx, width) / dx; for (int t = dt;; t += dt) if (t * dy % height == 0) { cout << hypot(t * dx, t * dy); break; } return 0; } ```
查看全文
0 0 0 4