QOJ.ac

QOJ

时间限制: 1 s 内存限制: 1024 MB 总分: 100

#3195. 触手可及

统计

João 想要加入他大学的机器人足球队。然而,由于他对机器人学和数学知之甚少,他决定制造一个二维机械臂来充实自己的知识。

该机械臂由 $N$ 个不同长度的节段组成。这些节段之间可以形成任意角度,包括从上方观察时看起来会自相交的配置。这个机械臂工作得很好,但要将机械臂末端定位在给定的 $x, y$ 目标坐标上,对于这么多需要控制的关节来说并非易事。你能帮帮 João 吗?

任务

给定机械臂的描述和相对于机械臂原点的目标坐标,计算出一个能使机械臂末端尽可能靠近目标的配置。

输入格式

第一行包含 $N$,即组成机械臂的节段数量。接下来有 $N$ 行,每行包含一个整数 $L_i$,描述从固定点到机械臂末端的第 $i$ 个节段的长度。最后一行包含 2 个整数:目标点的 $x, y$ 坐标。

数据范围

$1 \le N \le 20$ $1 \le L_i \le 1000$(第 $i$ 个节段的长度) $-20\,000 \le x, y \le 20\,000$(目标坐标)

输出格式

输出应包含 $N$ 行,每行包含两个实数 $x_i, y_i$,表示第 $i$ 个节段末端的坐标。

计算出的第 $i$ 个节段的长度与输入 $L_i$ 的误差不得超过 $0.01$。同样,计算出的末端位置与目标位置之间的绝对误差不得超过 $0.01$。

注意,通常情况下会有多种解。你的程序可以输出其中任意一种。

样例

样例输入 1

3
5
3
4
5 3

样例输出 1a

4.114 -2.842
6.297 -0.784
5.000 3.000

样例输出 1b

3.923 3.100
1.118 2.037
5.000 3.000

说明 1

Sample Output 1a

Sample Output 1b

样例输入 2

2
4
2
-8 -3

样例输出 2

-3.745 -1.404
-5.618 -2.107

说明 2

Sample Output 2

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.