当前位置:首页 > 题解目录 > 正文内容

【题解】夹角

亿万年的星光5年前 (2021-06-06)题解目录2136

【题目描述】

这次童鞋们面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。

注:夹角的范围[0,180],两个点不会在圆心出现。

【输入描述】

输入数据的第一行是一个数据T,表示有T组数据。
每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。

【输出描述】

对于每组输入数据,输出夹角的大小精确到小数点后两位。

【样例输入】

2
1 1 2 2
1 1 1 0

【样例输出】

0.00
45.00

【题目分析】

用向量去做,向量的积(ji)除以向量模的乘积(moji),再求其反函数,然后转换为角度
用到了acos()函数,它的返回值是弧度,要求角度需要 * 180/PI(PI就是π)


【参考答案】

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;

const double PI = 3.1415967;
int t;
double x1, x2, z1, y2;
double ji, moji;

int main() {
  while (scanf("%d", &t) != EOF) {
    while (t--) {
      scanf("%lf%lf%lf%lf", &x1, &z1, &x2, &y2);
      moji = sqrt(x1 * x1 + z1 * z1) * sqrt(x2 * x2 + y2 * y2);
      ji = x1 * x2 + z1 * y2;
      printf("%.2lf\n", acos(ji / moji) / PI * 180.0);
    }
  }
  return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】团伙

    【题目描述】在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个...

    【题解】流感传染

    【题目描述】有一批易感人群住在网格状的宿舍区内,宿舍区为n\*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已...

    因子分解

    【题目描述】输入一个数,输出其素因子分解表达式。【输入描述】输入一个整数 n (2≤n<100)。【输出描述】输出该整数的因子分解表达式。表达式中各个素数从小到大排列。如果该整数可以分解出因子a...

    【题解】求最长不下降序列

    【题目描述】设有由n(1≤n≤200)个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)且b(i)≠b(j)(i≠j),若存在i1<i2<i3<…<ie 且有b...

    【题解】切比雪夫距离

    【题目描述】小C有一个平面!它发现了平面上的两个点,请你求出求它们之间的切比雪夫距离。切比雪夫距离定义为x与y方向坐标差的绝对值较大值。【输入描述】四个整数,a,b,c,d。坐标为(a,b)与(c,d...

    【题解】最小子序列

    【题目描述】给你一个数组 nums,请你从中抽取一个子序列,满足该子序列的元素之和 严格 大于未包含在该子序列中的各元素之和。如果存在多个解决方案,只需返回 长...