Вычисление угла между двумя векторами в радианах
from math import *
x1, y1, x2, y2 = map(int, input().split())
d1 = (x1**2 + y1**2)**0.5
d2 = (x2**2 + y2**2)**0.5
z = acos((x1 * x2 + y1 * y2) / (d1 * d2))
print(z)
#include <bits/stdc++.h>
using namespace std;
int main() {
int x1, y1, x2, y2;
cin >> x1 >> y1 >> x2 >> y2;
double d1 = sqrt(x1*x1 + y1*y1);
double d2 = sqrt(x2*x2 + y2*y2);
double dot = x1 * x2 + y1 * y2;
double angle = acos(dot / (d1 * d2));
cout << angle << endl;
return 0;
}
Угол между векторами a(x₁, y₁) и b(x₂, y₂) вычисляется через скалярное произведение:
Результат возвращается в радианах:
Ввод: x₁ y₁ x₂ y₂ — координаты двух векторов
Вывод: угол в радианах
1 0 0 1
Векторы (1,0) и (0,1) перпендикулярны → угол = π/2 ≈ 1.5708
Вывод: 1.5707963267948966