zoukankan      html  css  js  c++  java
  • 2080夹角有多大II

    夹角有多大II

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 7200 Accepted Submission(s): 3594

    Problem Description
    这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小。
    注:夹角的范围[0,180],两个点不会在圆心出现。

    Input
    输入数据的第一行是一个数据T,表示有T组数据。
    每组数据有四个实数x1,y1,x2,y2分别表示两个点的坐标,这些实数的范围是[-10000,10000]。
    Output
    对于每组输入数据,输出夹角的大小精确到小数点后两位。

    Sample Inp
    2
    1 1 2 2
    1 1 1 0

    ample Output
    0.00
    45.00
    思路:感觉这就是一道高中数学题,里面涉及了余弦定理的应用。刚开始做时之间四个顶点定义成整形(int),后来提交时一直显示答案错误。
    从网上搜了别人的博客才知道应该定义成double类型,并且要考虑到夹角是否大于180,大于时应该让角度减去180
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    #include<math.h>
    #define pi 3.141592653
    int main()
    {
    	int n;
    	scanf("%d",&n);
    	while(n--)
    	{
    		double x1,y1,x2,y2;
    		double a,b,c;
    		double m;
    		scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
    		a=sqrt(x2*x2+y2*y2);
    		b=sqrt(x1*x1+y1*y1);
    		c=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
    		m=(b*b+a*a-c*c)/(2*a*b);                                     //余弦值
    		double m1;
    		m1=acos(m)*180/pi;                                           //反余弦函数
    		while(m1>180)
    			m1=m1-180;
    		printf("%.2lf
    ",m1);
    	
    	}
    	return 0;
    }

  • 相关阅读:
    (三)3-5 Python生成式和生成器
    (三)3-4 Python的高阶函数和匿名函数
    Linux下安装Python3
    Python math函数库
    今日头条as,cp,_signature参数破解
    使用scrapy实现分布式爬虫
    scrapy框架持久化存储
    Python中使用rsa加密
    使用Python进行微博登录
    WebDriverWait 显示等待
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4236790.html
Copyright © 2011-2022 走看看