解题思路:

注意事项:

参考代码:

import java.util.Scanner;

public class Main {
    public static double f(double s, double d, double l) {
        if (s <= l - d)
            return s + d;
        else {
            s = s - (l - d);
            int a = (int) (s / l);
            if (a % 2 != 0)
                return s - (l * a);
            else {
                return l - (s - (l * a));
            }
        }
    }

    public static double f1(double s, double d, double l) {
        if (s <= d)
            return d - s;
        else {
            s = s - d;
            int a = (int) (s / l);
            if (a % 2 != 0) {
                return l - (s - (l * a));
            } else {
                return s - (l * a);
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            double l = sc.nextDouble();
            double w = sc.nextDouble();
            double x = sc.nextDouble();
            double y = sc.nextDouble();
            double r = sc.nextDouble();
            double a = sc.nextDouble();
            double v = sc.nextDouble();
            double s = sc.nextDouble();
            if (l == 0 && w == 0)
                break;
            else {
                l = l - 2 * r;
                w = w - 2 * r;
                x = x - r;
                y = y - r;
                double t = a;
                a = Math.toRadians(a);
                double sx = Math.abs(v * Math.cos(a) * s);
                double sy = Math.abs(v * Math.sin(a) * s);
                if (t <= 90) {
                    x = f(sx, x, l) + r;
                    y = f(sy, y, w) + r;
                } else if (t <= 180) {
                    x = f1(sx, x, l) + r;
                    y = f(sy, y, w) + r;
                } else if (t <= 270) {
                    x = f1(sx, x, l) + r;
                    y = f1(sy, y, w) + r;
                } else {
                    x = f(sx, x, l) + r;
                    y = f1(sy, y, w) + r;
                }
            }
            System.out.printf("%.2f %.2f\n",x,y);
        }
    }

}


点赞(1)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论