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

【题解】夹角

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

【题目描述】

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

注:夹角的范围[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-n,每个格子上都有一个数xi,开始时你在位置0,每次你可以向前跳1-2格,然后取走格子上的数,直到跳到位置n+1。取走的数的和就是你的得分,现在你想知道你可能...

【题解】数学游戏

【题目描述】Kri 喜欢玩数字游戏。 一天,他在草稿纸上写下了t 对正整数(x,y) ,并对于每一对正整数计算出了z=x*y*gcd(x,y);可是调皮的 Zay 找到了 Kri 的草稿纸,并把每一...

【题解】求车速问题

【题目描述】一辆以固定速度行驶的汽车,司机在上午10点看到里程表上的读数是一个对称数(即这个数从左向右读和从右向左读是完全一样的),为95859。两小时后里程表上出现了一个新的对称数。问该车的速度是多...

【题解】计数2的N次方

【题目描述】任意给定一个正整数N(N≤100),计算2的n次方的值。【输入描述】输入一个正整数N。【输出描述】输出2的N次方的值。【样例输入】5【样例输出】32【参考答案】#include<io...

求正整数2和n之间的完全数

【题目描述】求正整数2和n之间的完全数(一行一个数)。完全数:因子之和等于它本身的自然数,如6=1+2+3【输入描述】输入n【输出描述】一行一个数,按由小到大的顺序。【输入样例】7【输出样例】6#in...