給定兩向量 (x1,y1), (x2,y2),求它們之間的夾角(0°~180°),輸出保留兩位小數。
cosθ = (x1*x2 + y1*y2) / (√(x1²+y1²) * √(x2²+y2²))
用 atan2 求各向量極角,相減取絕對值,若 > 180° 則用 360° 減之。
angle = atan2(y,x) * 180/π 自動處理象限。
#include <bits/stdc++.h>
using namespace std;
int main() {
int T; cin >> T;
const double PI = acos(-1);
while (T--) {
double x1,y1,x2,y2; cin >> x1 >> y1 >> x2 >> y2;
double a1 = atan2(y1, x1) * 180 / PI;
double a2 = atan2(y2, x2) * 180 / PI;
double diff = fabs(a1 - a2);
if (diff > 180) diff = 360 - diff;
printf("%.2f\n", diff);
}
return 0;
}