[AtCoder] [經典競程 90 題] 018 - Statue of Chokudai(★3)

題目連結: https://atcoder.jp/contests/typical90/tasks/typical90_r
題目大意:
在 $x=0$ 的平面上有一個高度為 $L$ 的摩天輪,其轉一圈要花費 $T$ 時間,並且其轉速固定。在時間點 $0$ 的時候某車廂座標為 $(0, 0, 0)$、$\frac{T}{4}$ 時座標為 $(0, -\frac{L}{2}, \frac{L}{2})$、$\frac{T}{2}$ 時座標為 $(0, 0, L)$、$\frac{3T}{4}$ 時座標為 $(0, \frac{L}{2}, \frac{L}{2})$。
現在有一個「高橋直大像」位在$(X, Y, 0)$的地方。給定 $Q$ 筆詢問,請每次回答當坐了 $e_i$ 時間的摩天輪後與「高橋直大像」的仰角夾角為多少?
高中基礎三角函數代一代移一移就好了,不知道題解怎麼寫XD
#include <bits/stdc++.h>
using namespace std;
using llf = long double;
static constexpr llf PI = acos(-1);

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.precision(15);
	int T, L, X, Y, Q;
	cin >> T >> L >> X >> Y >> Q;
	while (Q--) {
		int e; cin >> e;
		llf ang =  static_cast<llf>(e) / T * 2 * PI + PI;
		llf y = L * sin(ang) / 2, z = L * (cos(ang) + 1) / 2 ;

		llf dx = X, dy = Y - y, dz = -z;
		llf dd = hypot(dx, dy, dz);
		llf theta = acos(dz / dd);
		cout << theta / PI * 180 - 90 << '\n';
	}
	return 0;
}

留言

這個網誌中的熱門文章

[TIOJ] 1271. [IOI 2012] Scrivener 斯克里夫尼

[TIOJ] 1429. [APIO '12] 忍者調度問題

[Codeforces] 731D. 80-th Level Archeology