提交地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1090

这是我最喜欢做的题之一,因为这种题我感觉 做一遍以后就会了,不做心里总是感觉这个地方不会,有点担心。

The Circumference of the Circle


Time Limit: 2 Seconds      Memory Limit: 65536 KB


To calculate the circumference of a circle seems to be an easy task - provided you know its diameter. But what if you don't?

You are given the cartesian coordinates of three non-collinear points in the plane.
Your job is to calculate the circumference of the unique circle that intersects all three points.

Input Specification

The input file will contain one or more test cases. Each test case consists of one line containing six real numbers x1,y1, x2,y2,x3,y3, representing the coordinates of the three points. The diameter of the circle determined by the three points will never exceed a million. Input is terminated by end of file.

Output Specification

For each test case, print one line containing one real number telling the circumference of the circle determined by the three points. The circumference is to be printed accurately rounded to two decimals. The value of pi is approximately 3.141592653589793.

Sample Input

0.0 -0.5 0.5 0.0 0.0 0.5
0.0 0.0 0.0 1.0 1.0 1.0
5.0 5.0 5.0 7.0 4.0 6.0
0.0 0.0 -1.0 7.0 7.0 7.0
50.0 50.0 50.0 70.0 40.0 60.0
0.0 0.0 10.0 0.0 20.0 1.0
0.0 -500000.0 500000.0 0.0 0.0 500000.0

Sample Output

3.14
4.44
6.28
31.42
62.83
632.24
3141592.65

先来看看涉及的公式吧!

按照书上来吧:

先看个圆的公式:(x-xo)²+(y-yo)²=r²

已知三点可一代入求得 圆心(xo,yo) 和 半径 r

但是推到公式太复杂。

让我们来换个公式。

已知三点可以求得三条边长a,b,c

sinA/a=sinB/b=sinC/c = 2r

A,B,C为角;

c²=a²+b²-2abcosC

sinC²+cosC²=1

由这些公式就能推到了

sinC²=(c/2r)²

cosC²=((a²+b²-c²)/2ab)²

#include<iostream>
#include<stdio.h>
#include<math.h>
#define  PI 3.141592653589793
using namespace std;
int main()
{double x1,y1,x2,y2,x3,y3;while(cin>>x1>>y1>>x2>>y2>>x3>>y3){double af = (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);double bf = (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3);double cf = (x2-x3)*(x2-x3)+(y2-y3)*(y2-y3);double left =(af+bf-cf)*(af+bf-cf)/(4*af*bf);double sinc2=1-left;double r = sqrt(cf/sinc2/4);printf("%.2lf\n",r*PI*2);}
}

这些代码就足够了,我的af,bf,cf等是a的平方,b 的平方,c的平方。自己推导一下 就出来了,平方太多别乱了 我刚做的时候就乱了,不出结果,浪费了很长时间。

下面再说下一个公式:

三角形外接圆半径为r=abc/4s;

根据海伦公式计算面积:s=sqrt(p(p-a)(p-b)(p-c)) 其中 p=(a+b+c)/2;

这个公式同样可以推到出来。

好了!

感谢自己坚持!

ZOJ 1090 The Circumference of the Circle(计算三角形的外接圆)相关推荐

  1. BC26 计算三角形的周长和面积

    描述 根据给出的三角形3条边a, b, c,计算三角形的周长和面积. 数据范围:0<a,b,c≤100000 输入描述: 一行,三角形3条边(能构成三角形),中间用一个空格隔开. 输出描述: 一 ...

  2. PCL点云处理之计算三角形的外接圆半径(一百二十七)

    PCL点云处理之计算三角形的外接圆的半径(一百二十七) 一.算法介绍 二.代码实现 三.效果展示 一.算法介绍 给出三角形的三个顶点坐标,计算外接圆的半径,具体代码实现如下: 二.代码实现 #incl ...

  3. 【人工智能的数学基础】圆周率(Ratio of Circumference to Diameter)的计算

    [人工智能的数学基础]圆周率(Ratio of Circumference to Diameter)的计算 文章目录 [人工智能的数学基础]圆周率(Ratio of Circumference to ...

  4. 2242 The Circumference of the Circle

    Description To calculate the circumference of a circle seems to be an easy task - provided you know ...

  5. BC26 计算三角形的周长和面积(海伦公式)

    BC26 计算三角形的周长和面积 海伦公式:a.b.b分别为三角形三个边的长度. #include<iostream> #include<cmath> #include< ...

  6. 用海伦公式计算三角形的面积 python_java程序设计1-2之用海伦公式计算三角形的面积...

    与<java程序设计1-2之用海伦公式计算三角形的面积>相关的范文 三角形面积公式 三角形面积公式 1. 已知三角形底a ,高h ,则 S =ah/2 2. 已知三角形三边a,b,c ,则 ...

  7. 计算三角形的周长和面积---C语言编程

    1.问题和答案 描述 根据给出的三角形3条边a, b, c,计算三角形的周长和面积. 输入描述: 一行,三角形3条边(能构成三角形),中间用一个空格隔开. 输出描述: 一行,三角形周长和面积(保留两位 ...

  8. C语言-计算三角形的周长和面积

    描述 根据给出的三角形3条边a, b, c,计算三角形的周长和面积. 数据范围: 0 < a,b,c \le 100000 \0<a,b,c≤100000 输入描述: 一行,三角形3条边( ...

  9. Java黑皮书课后题第3章:**3.19(计算三角形的周长)编写程序,读取三角形的三个边,如果输入值合法就计算这个三角形的周长;否则,显示这些输入值不合法。如果任意两条边的和大于第三边,则输入值都是合

    **3.18(计算三角形的周长)编写程序,读取三角形的三个边,如果输入值合法就计算这个三角形的周长:否则,显示这些输入值不合法.如果任意两条边的和大于第三边,则输入值都是合法的 题目 题目概述 破题 ...

最新文章

  1. 单一nginx负载均衡+LNMP分布式架构
  2. 监测linux一些重要文件md5值脚本
  3. cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
  4. Django从理论到实战(part47)--ListView类
  5. 修改DOS窗口编码格式
  6. ionic判断android版本,$ionicplatform 判断是android还是ios?
  7. php中%3c w() %3e,DedeCMS V5.7 SP2后台存在代码执行漏洞
  8. 25. 自定义Git
  9. Python Built-in Functions内置函数用法总结(全)
  10. 毕业论文中的参考文献怎么引用?
  11. php 多城市切换,切换城市
  12. 支持SwiftUI!Swift版图片视频浏览器-JFHeroBrowser上线啦
  13. 烧写ARM板----MYS-6ULX
  14. 100个开源C/C++项目中的bugs(一)数组和字符串处理的错误
  15. IOS UTI统一类型标识符:判断文件类型通过后缀
  16. 【源码部署】Kettle IDEA 源码部署
  17. 2020年3月全国程序员工资统计,平均工资13820元
  18. 《回炉重造 Java 基础》——集合(容器)
  19. 【java】《java编程思想》 读书笔记
  20. 优化问题---梯度、方向导数、法线

热门文章

  1. 产业互联网平台建设的策略
  2. 浅谈彩色图像、灰度图像、二值图像和索引图像区别
  3. jquery中each的全面用法
  4. Dofbot机械臂从零部署笔记(4)——ROS之Moveit下实现实机逆向运动学规划
  5. 2021年全球及我国半导体产业发展趋势展望(下)
  6. SecureCRT脚本
  7. 网络经济与企业管理(浏览)
  8. vue+xterm.js实现webssh踩坑之旅
  9. 循环打印直角、杨辉三角图形
  10. 汉诺塔(一)(快速幂)