蓝桥杯真题——三角形的面积

这篇具有很好参考价值的文章主要介绍了蓝桥杯真题——三角形的面积。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

平面直角坐标系中有一个三角形, 请你求出它的面积。

输入描述

第一行输入一个 T ,代表测试数据量.

每组测试数据输入有三行,每行一个实数坐标 (x,y) 代表三角形三个顶点。

1≤T≤10^3,   −10^5≤x,y≤10^5

输出描述

输出一个实数表示三角形面积。结果保留2位小数,误差不超过 10^(−2)

输入输出样例

示例 1

输入

2
0 1
1 0
1 1
0 0
1 1
2 2

输出

0.50
0.00

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

目录

前言

一、问题分析

二、计算技巧

三、代码

四、有缺点的示范

 总结


前言

        这是一道计算机几何基础题,难度为简单,但同样也会有很多人做错,绝大多数人的会存在的误区:

1. 使用传统的三角形面积求解公式:底*高/2

2. 使用向量,向量夹角求解

这样做的思路没错,但仅限于手工计算方便吧,使用计算机计算就会出现计算精度和误差的问题,从而导出输出结果错误。

对于数学能力比较好的人,掌握计算技巧,相信能很快就做出来了。


一、问题分析

一共有T个三角形,每个三角形都只知道三个顶点的坐标,需要分别计算各个三角形的面积并分行输出计算结果。

数据规模:T最大为10^3,坐标的范围为[-10^5,10^5],这个规模的数据可以放心计算,问题不大,完全可以很好的控制在1s内程序运行完成。

二、计算技巧

计算公式:

三个坐标点:(x1,y1),(x2,y2),(x3,y3)

面积 2S = Math.abs(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2);

S = S/2

是否有印象?这是我能想到最简单和最有效的计算公式了,忘记的小伙伴可以去百度温习一下这公式


三、代码

import java.util.Scanner;

public class Main {
  
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int N = scan.nextInt();
        for(int i=0;i<N;i++){
          double x1 = scan.nextDouble();
          double y1 = scan.nextDouble();
          double x2 = scan.nextDouble();
          double y2 = scan.nextDouble();
          double x3 = scan.nextDouble();
          double y3 = scan.nextDouble();
          double S = Math.abs(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2);
          System.out.printf("%.2f",S/2);
          System.out.println();
        }
        scan.close();
    }
}

四、有缺点的示范

以下是一个输出结果不会完全正确的案例,计算方法和思路是没错的,你可以思考以下啥原因导致的部分错误,也就是部分用例可以运行通过。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //测试数据的组数
        int T = scan.nextInt();
        //3*T组三角形顶点的坐标  每三个坐标(x,y)为一个三角形
        int[][] a = new int[3*T][2];
        for(int i=0; i<3*T; i++){
          a[i][0] = scan.nextInt();
          a[i][1] = scan.nextInt();
        }
        scan.close();

        //求三角形的面积 底d*高h/2
        for(int i=0; i<3*T; i += 3){
          //知道三个顶点坐标,使用向量求解三角形面积S = 1/2*|AB|*|AC|*sinx
        	//三个顶点  按顺序默认编号为A、B、C
          double ABx = a[i+1][0] - a[i][0];
          double ABy = a[i+1][1] - a[i][1];
          double ACx = a[i+2][0] - a[i][0];
          double ACy = a[i+2][1] - a[i][1];
          double AB = Math.sqrt( (ABx*ABx + ABy*ABy));
          double AC = Math.sqrt((ACx*ACx + ACy*ACy));
          double cosx = (ABx*ACx + ABy*ACy)/(AB*AC);
          double sinx = Math.sqrt((1-cosx*cosx));
          double S = 0.50*AB*AC*sinx;
          System.out.printf("%.2f\n",S);
          
        }
    }
}

 总结

学习算法,对于数学学的好的人可以得心应手,逻辑思维能力很重要,掌握计算技巧,往往比暴力计算更有效和更省时文章来源地址https://www.toymoban.com/news/detail-410182.html

到了这里,关于蓝桥杯真题——三角形的面积的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言程序——求三角形面积

    输入三角形的三个边,计算三角形的面积输出(运用海伦公式计算)。 假设输入三角形的三条边是合法的三角形,则可以采用海伦公式计算,公式为: a r e a = s ( s − a ) ( s − b ) ( s − c ) area=sqrt{s(s-a)(s-b)(s-c)} a re a

    2024年02月07日
    浏览(56)
  • 计算长方形、三角形、圆形的面积和周长

    系统设计框图 : 图形模块的 概要设计( 设计数据结构和接口 ): 数据结构: float 表示面积和周长 长方形的数据( 一般typedef都是定义在对应模块的头文件中 ) typedef struct{ float width; float height; }Rect_st; 三角形的数据 typedef struct{ float bottom; float height; }Triangle_st; 圆形的数据

    2023年04月23日
    浏览(44)
  • C语言已知三角形三条边abc,求面积

            输入三角形的三条边a,b,c,利用海伦公式求三角形的面积。海伦公式又称海伦-秦九韶公式,它是利用三角形的三条边的边长直接求三角形面积的公式。表达式为:S=√p(p-a)(p-b)(p-c),它的特点是形式漂亮,便于记忆。 代码如下: 注意:sqrt是数学函数,需要调用数学

    2024年02月05日
    浏览(55)
  • 即将开源STD:用于3D位置识别的稳定三角形描述子

    文章:STD: Stable Triangle Descriptor for 3D place recognition 作者:Chongjian Yuan, Jiarong Lin , Zuhao Zou , Xiaoping Hong, and Fu Zhang 编辑:点云PCL 代码:https://github.com/hku-mars/STD.git(接受后开源) 欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文

    2024年02月03日
    浏览(51)
  • 数字三角形+包子凑数(蓝桥杯JAVA解法)

    题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和(路径上的每一步只可沿左斜线向下或右斜线向下走)。 输入描述 输入的第一行包含一个整数 N (1≤N≤

    2024年02月01日
    浏览(40)
  • 蓝桥杯第十一届省赛——数字三角形(python组)

    题目:数字三角形 【问题描述】: 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最 大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边

    2023年04月10日
    浏览(48)
  • 蓝桥 卷“兔”来袭编程竞赛专场-03破解三角形密码 题解

    挑战介绍 三角形密码指的是将一串字符串按照正直角三角形的形状排列,传递的信息隐藏在每一行的最后一个字符,然后将所有的行的最后一个字符依次连接,就是需要传递的信息。 例如加密后的字符串是:我们爱的是蓝色的心桥 将加密字符串按照正直角三角形填充后如下

    2023年04月16日
    浏览(38)
  • C/C++字符三角形 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

    目录 C/C++字符三角形 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 2020年12月 C/C++编程等级考试一级编程题 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。 输入描述: 输入只有一行

    2024年02月08日
    浏览(72)
  • css实现圆角三角形,圆角三角形的实现

    今天给大家带来一个如何实现圆角三角形的方案,这个方案虽然可以实现,但是也是借助拼凑等方式来实现的,假如想一个div来实现圆角三角形,还是比较困难的。之前文章讲了如何实现对话框,里面介绍了三角形的实现方式。今天讲讲如何实现圆角三角形。 想要生成一个带

    2024年02月09日
    浏览(53)
  • 用python写九九乘法表(左上三角、左下三角、右上三角、右下三角、正三角形、倒三角形格式)

    1.左上三角格式:   2.左下三角格式:   3.右上三角格式:     4.右下角格式:     5.倒三角格式:      

    2024年02月11日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包