十五月明


私信TA

用户名:dotcpp0605328

访问量:5432

签 名:

等  级
排  名 319
经  验 5465
参赛次数 0
文章发表 87
年  龄 18
在职情况 学生
学  校 曲阜师范大学
专  业 人工智能

  自我简介:

Easy

解题思路:

注意事项:解析请看这里:  https://blog.dotcpp.com/a/63859



参考代码:

#include <iostream>

#include <cmath>

#include <iomanip>

using namespace std;

 

int main() {

 

    int L, W;          // 台球桌长宽

    int x, y, R;       // 初始球心位置和台球半径

    int a, v, s;       // 初始角度,速度,经过时间

    double resX, resY; // 最终球心位置

 

    while (cin >> L >> W >> x >> y >> R >> a >> v >> s) 

    {

        if (!L) break;

 

       //构造新的台球桌

        L -= 2 * R;

        W -= 2 * R;

        x -= R;

        y -= R;

 

        double arc = a * acos(-1) / 180; // 正确的角度转弧度,公式

 

        // 球距离原点的总位移,必须取绝对值

        double length = abs(x + v * s * cos(arc));

        double width = abs(y + v * s * sin(arc));

 

        // 每移动2L实际坐标没变

        while (length > 2 * L ) { length -= 2 * L; }

        while (width > 2 * W)  { width -= 2 * W; }

 

 

        if (length <= L) { resX = length + R; } 

        else { resX = 2 * L - length + R; }


        if (width <= W) { resY = width + R; }

        else{ resY = 2 * W - width + R;}


        cout << fixed << setprecision(2) << resX << " " << resY << endl;

    } 

    return 0;

}


 

0.0分

2 人评分

  评论区

  • «
  • »