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

【题解】夹角

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

【题目描述】

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

注:夹角的范围[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;
}


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

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

分享给朋友:

相关文章

【题解】建设病房

1.建设病房(build.cpp)【题目描述】2020年1月23日下午,武汉市建设局紧急召集中建三局等单位举行专题会议,要求参照2003年抗击非典期间北京小汤山医院模式,在武汉职工疗养院建设火神山医院...

【题解—深搜】马走日

【题解—深搜】马走日

【题目描述】马在中国象棋以日字形规则移动。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。【输入】第一行为整...

【题解】约瑟夫问题2

【题解】约瑟夫问题2

【题目描述】M个人围成一圈,每分钟相邻的两个人可以交换位置(只能有一对交换)。求使M个人的顺序颠倒(即每个人左边相邻的人换到右边,右边相邻的人换到左边)所需的最少时间(分钟数)。【输入描述】 ...

【题解】最小子序列

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

【题解】使每位学生都有座位的最少移动次数

【题目描述】一个房间里有 n 个 空闲 座位和 n 名 站着的 学生,房间用一个数轴表示。给你一个长度为 n&...

【题解】排队买票

【题目描述】有M个小孩到公园玩,门票是1元。其中N个小孩带的钱为1元,K个小孩带的钱为2元。售票员没有零钱,问这些小孩共有多少种排队方法,使得售票员总能找得开零钱。注意:两个拿一元零钱的小孩,他们的位...