蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】

算法提高 12-1三角形

时间限制:1.0s   内存限制:256.0MB

问题描述

  为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体。分别设计独立的函数计算三角形的周长、面积、中心和重心。输入三个点,输出这三个点构成的三角形的周长、面积、外心和重心。结果保留小数点后2位数字。

样例输出

与上面的样例输入对应的输出。
例:

数据规模和约定

  输入数据中每一个数的范围。
  例:doule型表示数据。

题目链接:

  http://lx.lanqiao.cn/problem.page?gpid=T415

题目大意:

  给三角形三点坐标

  计算周长 面积 外心 重心

题目思路:

  【数学公式】

  带入数学公式即可。

  外心:
    x = △x/△, y = △y/△
    其中 △ = 2(xa-xb)(yc-yb) - 2(ya-yb)(xc-xb)
    △x = (yc-yb)(xa^2+ya^2-xb^2-yb^2) - (ya-yb)(xc^2+yc^2-xb^2-yb^2)
    △y = (xa-xb)(xc^2+yc^2-xb^2-yb^2) - (xc-xb)(xa^2+ya^2-xb^2-yb^2)

  重心:

    x=(xa+xb+xc)/3, y=(ya+yb+yc)/3

 1 /****************************************************
 2
 3     Author : Coolxxx
 4     Copyright 2017 by Coolxxx. All rights reserved.
 5     BLOG : http://blog.csdn.net/u010568270
 6
 7 ****************************************************/
 8 #include<bits/stdc++.h>
 9 #pragma comment(linker,"/STACK:1024000000,1024000000")
10 #define abs(a) ((a)>0?(a):(-(a)))
11 #define lowbit(a) (a&(-a))
12 #define sqr(a) ((a)*(a))
13 #define mem(a,b) memset(a,b,sizeof(a))
14 const double eps=1e-8;
15 const int J=10000;
16 const int mod=1000000007;
17 const int MAX=0x7f7f7f7f;
18 const double PI=3.14159265358979323;
19 const int N=1004;
20 using namespace std;
21 typedef long long LL;
22 double anss;
23 LL aans;
24 int cas,cass;
25 int n,m,lll,ans;
26 class point
27 {
28 public:
29     double x,y;
30 };
31 class triangle
32 {
33 public:
34     point a,b,c;
35     double aa,bb,cc,p;
36     triangle(point i,point j,point k)
37     {
38         a=i,b=j,c=k;
39         aa=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
40         bb=sqrt(sqr(a.x-c.x)+sqr(a.y-c.y));
41         cc=sqrt(sqr(b.x-c.x)+sqr(b.y-c.y));
42         p=(aa+bb+cc)/2;
43     }
44     double perimeter()
45     {
46         return p+p;
47     }
48     double area()
49     {
50         return sqrt(p*(p-aa)*(p-bb)*(p-cc));
51     }
52     point circumcenter()
53     {
54         point p;
55         p.x=(c.y-b.y)*(sqr(a.x)+sqr(a.y)-sqr(b.x)-sqr(b.y))-(a.y-b.y)*(sqr(c.x)+sqr(c.y)-sqr(b.x)-sqr(b.y));
56         p.x/=2*(a.x-b.x)*(c.y-b.y)-2*(a.y-b.y)*(c.x-b.x);
57         p.y=(a.x-b.x)*(sqr(c.x)+sqr(c.y)-sqr(b.x)-sqr(b.y))-(c.x-b.x)*(sqr(a.x)+sqr(a.y)-sqr(b.x)-sqr(b.y));
58         p.y/=2*(a.x-b.x)*(c.y-b.y)-2*(a.y-b.y)*(c.x-b.x);
59         return p;
60     }
61     point centroid()
62     {
63         point p;
64         p.x=(a.x+b.x+c.x)/3;
65         p.y=(a.y+b.y+c.y)/3;
66         return p;
67     }
68 };
69 int main()
70 {
71     #ifndef ONLINE_JUDGE
72 //    freopen("1.txt","r",stdin);
73 //    freopen("2.txt","w",stdout);
74     #endif
75     int i,j,k,l;
76     int x,y,z;
77 //    for(scanf("%d",&cass);cass;cass--)
78 //    for(scanf("%d",&cas),cass=1;cass<=cas;cass++)
79 //    while(~scanf("%s",s))
80 //    while(~scanf("%d",&n))
81     if(1)
82     {
83         point a,b,c;
84         cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y;
85         triangle p(a,b,c);
86         a=p.circumcenter();
87         b=p.centroid();
88         printf("%.2lf\n",p.perimeter());
89         printf("%.2lf\n",p.area());
90         printf("%.2lf %.2lf\n",a.x,a.y);
91         printf("%.2lf %.2lf\n",b.x,b.y);
92     }
93     return 0;
94 }
95 /*
96 //
97
98 //
99 */

时间: 2024-10-29 19:07:29

蓝桥 ADV-230 算法提高 12-1三角形 【数学公式】的相关文章

算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链.当他准备把项链首尾相接的时候,土方进来了. "哇这么恶心的项链你也做得出来!!!" 盾神自知审美不是他的长项,于是他很谦虚地请教土方,怎么才能把项链做得漂亮. "这个嘛~首先你要在这里加上一个这种颜色的珠子,然后在这里去掉这个珠子,然后--,最后你看看是不是漂亮很多咧~&

蓝桥杯java 算法提高 统计单词数

问题描述 统计输入英文文章段落中不同单词(单词有大小写之分,但统计时忽略大小写)各自出现的次数. 输入段落中所含单词的总数不超过100,最长单词的长度不超过20个字母. 输入格式 一个包含若干句子的段落, 每个句子由若干英文单词组成. 除空格,逗号和句号外, 这些输入的句子中不含其他非字母字符, 并且, 逗号和句号紧跟在它前面的英文单词后面, 中间没有空格. 段落最后一个字符是回车符,表示输入结束. 输出格式 若段落中共有M个不同的英文单词,则按照其在段落中出现的先后顺序输出M行,各行的格式为:

蓝桥杯,算法提高,8皇后&#183;改

题目如下: 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 28 29 30 31 3233 34 35 36 37 38 39 4041 42 43 44 45 46 47 4848 50 51 52 53 54 55 5657 58 59 60

算法笔记_105:蓝桥杯练习 算法提高 上帝造题五分钟(Java)

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 第一分钟,上帝说:要有题.于是就有了L,Y,M,C 第二分钟,LYC说:要有向量.于是就有了长度为n写满随机整数的向量 第三分钟,YUHCH说:要有查询.于是就有了Q个查询,查询向量的一段区间内元素的最小值 第四分钟,MZC说:要有限.于是就有了数据范围 第五分钟,CS说:要有做题的.说完众神一哄而散,留你来收拾此题 输入格式 第一行两个正整数n和Q,表示向量长度和查询个数 接下来一行n个整数,依次对应向量中元素:a[0],a[1],

蓝桥杯:算法提高 9-2 文本加密

时间限制:1.0s   内存限制:256.0MB 问题描述 先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:"A"转化"B","B"转化为"C",... ..."Z"转化为"a","a"转化为"b",... ..., "z"转化为"A",其它字符不加密.编写程序,加密给定字

蓝桥杯 算法提高 6-17 复数四则运算

算法提高 6-17复数四则运算 时间限制:1.0s   内存限制:512.0MB 设计复数库,实现基本的复数加减乘除运算. 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔:输出时按a+bi的格式在屏幕上打印结果.参加样例输入和样例输出. 注意考虑特殊情况,无法计算时输出字符串"error". 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i 1 #include<iostream> 2 #inc

蓝桥杯 算法提高 8皇后&#183;改 -- DFS 回溯

  算法提高 8皇后·改   时间限制:1.0s   内存限制:256.0MB 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 28 29 30 31 3233 34 35 36 37 38 39 4041 42 43 44 45 46 47 48

蓝桥杯-算法提高-日期计算

算法提高 日期计算 时间限制:1.0s   内存限制:256.0MB 问题描述 已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况.尤其是逢百年不闰,逢400年闰的情况. 输入格式 输入只有一行 YYYY MM DD 输出格式 输出只有一行 W 数据规模和约定 1599 <= YYYY <= 2999 1 <= MM <= 12 1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期 1 <= W &

蓝桥杯 算法提高 道路和航路 满分AC ,SPFA算法的SLF优化,测试数据还是比较水的,貌似没有重边

算法提高 道路和航路 时间限制:1.0s   内存限制:256.0MB 问题描述 农夫约翰正在针对一个新区域的牛奶配送合同进行研究.他打算分发牛奶到T个城镇(标号为1..T),这些城镇通过R条标号为(1..R)的道路和P条标号为(1..P)的航路相连. 每一条公路i或者航路i表示成连接城镇Ai(1<=A_i<=T)和Bi(1<=Bi<=T)代价为Ci.每一条公路,Ci的范围为0<=Ci<=10,000:由于奇怪的运营策略,每一条航路的Ci可能为负的,也就是-10,000