ZOJ 1090 - The Circumference of the Circle 解题报告

简介: 题目的链接在这里:       http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1090       题目描述很简单,大意是,给出三个点的坐标,设为A(x1,y1),B (x2, y2),C (x3, y3),然后求出通过这三点的圆的周长(保留两位小数)。
      题目的链接在这里:
      题目描述很简单,大意是,给出三个点的坐标,设为A(x1,y1),B (x2, y2),C (x3, y3),然后求出通过这三点的圆的周长(保留两位小数)。但推导公式却比较麻烦,我是这样来做的。
      首先根据同一个弦的圆心角角度相同,不难得出,圆周的直径d= BC/ sin a = AC/ sin b = AB/sin c;
      因此求圆周长= BC / sin (a) *PI;
      其中BC为角a的对边长度= sqrt ( (x2-x3)^2 + (y2-y3)^2);
      至于sin (a),我们必须通过三点坐标来算,比较麻烦一些,可以利用三角函数的公式:
      sin (a)=sin (a1-a2)=sin (a1)cos(a2)-cos(a1)sin(a2);
      其中a1和a2分别为射线AC和射线AB和x轴的夹角。如果B,C点都在第一象限,显然有
      sin(a1)=(y3-y1)/AC;
      cos(a1)=(x3-x1)/AC;
      sin(a2)=(x2-x1)/AB;
      cos(a2)=(y2-y1)/AB;
      化简上式:
      周长= BC / sin (a) * PI =( AC*AB*BC ) / ( (y3-y1)(x2-x1)-(x3-x1)(y2-y1) )  * PI;
      因此,我们就可以写出如下代码 ( IN C ) :
img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif The Circumference of the Circle
#include <stdio.h>
#include 
<math.h>
#define PI 3.141592653589793
#define DISTANCE(x1,y1,x2,y2)  sqrt(((x2)-(x1))*((x2)-(x1))+((y2)-(y1))*((y2)-(y1)))
void main()
{
    
double x1, x2, x3, y1, y2, y3;
    
double d12, d23, d31, k, result;
    
while(scanf("%lf %lf %lf %lf %lf %lf"&x1, &y1, &x2, &y2, &x3, &y3)!=EOF)
    {
        d12 
= DISTANCE(x1,y1,x2,y2);
        d23 
= DISTANCE(x2,y2,x3,y3);
        d31 
= DISTANCE(x3,y3,x1,y1);
        k 
= fabs((y3-y1)*(x2-x1)-(x3-x1)*(y2-y1));
        result
=d12*d23*d31/k*PI;
        printf(
"%.2lf\n",result); 
    }
}
      代码仅有18行,并且一次性顺利的AC了,并且发现我的解居然是所有解中排名第一的,呵呵,额外的惊喜。
 
AC WA PE FPE SF TLE MLE CE Total
1926(54%) 864(24%) 8(0%) 1(0%) 85(2%) 275(7%) 0(0%) 354(10%) 3517

Top Submssions by Run Time
Submit Time Language Run Time(ms) Run Memory(KB) User Name
2008-10-15 21:49:18 C 0 160 hoodlum1980
2008-10-16 17:35:10 C 0 160 angel
2008-10-03 16:58:56 C++ 0 176 xxhhtt
2008-10-03 21:35:18 C++ 0 176 mart0258
2008-10-07 15:21:35 C++ 0 176 Rorro
2008-10-09 13:14:03 C++ 0 176 missing08
2008-10-15 02:34:20 C++ 0 176 watashi@Zodiac
2008-10-15 02:54:43 C++ 0 176 watashi@Zodiac
2008-10-15 03:02:27 C++ 0 176 watashi@Zodiac
2008-10-03 17:48:05 C++ 0 184 lizhen
         。。。
目录
相关文章
|
8月前
|
存储 机器学习/深度学习 网络协议
阿里云企业级ARM计算规格族简介:特点、场景与价格参考
Arm计算是指基于 ARM 架构的处理器进行的计算,本文将为您解析阿里云ARM云服务器的特点、适用场景,以及最新价格情况,以供了解和参考。
|
10月前
|
人工智能 自然语言处理 监控
PMP认证有哪些要求:干货分享
本文详细介绍PMP的报考要求、考试内容与形式、认证有效期及价值,以及备考策略和推荐的学习工具,帮助考生高效准备。
354 2
|
10月前
|
机器学习/深度学习 人工智能 编译器
【AI系统】Auto-Tuning 原理
本文探讨了在多样化硬件平台上部署深度神经网络(DNN)时,传统算子库面临的挑战及解决方案。随着硬件平台的多样化和快速迭代,手动编写高性能算子库变得日益困难。文中介绍了基于TVM的三种自动调优系统——AutoTVM、Ansor和Meta Scheduler,它们通过自动生成高性能算子,有效解决了传统方法的局限性,提高了DNN在不同硬件平台上的执行效率。
311 1
|
12月前
|
人工智能 搜索推荐 安全
人工智能与未来社会:探索AI在教育领域的革命性影响
本文深入探讨了人工智能(AI)技术在教育领域的潜在影响和变革。通过分析AI如何个性化学习路径、提高教学效率以及促进教育资源的公平分配,我们揭示了AI技术对教育模式的重塑力量。文章还讨论了实施AI教育所面临的挑战,包括数据隐私、伦理问题及技术普及障碍,并提出了相应的解决策略。通过具体案例分析,本文旨在启发读者思考AI如何助力构建更加智能、高效和包容的教育生态系统。
|
12月前
|
存储 运维 虚拟化
虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
|
12月前
|
移动开发 编解码 数据可视化
低代码可视化-uniapp SliderRange区间组件-代码生成器
SliderRange区间组件是一种用户界面元素,允许用户通过拖动滑块选择数值范围。组件支持微信小程序、H5和App,具有高度可定制性、响应式设计和多种事件处理功能。适用于价格筛选、音量调节等场景。代码实现包括滑动区域、滑块、事件处理等部分,支持可视化配置步长、颜色等属性。使用时需注意选择合适步长、提供清晰标签和考虑无障碍设计。
341 0
|
自然语言处理 前端开发 JavaScript
Babel 的工作原理以及怎么写一个 Babel 插件
Babel 的工作原理以及怎么写一个 Babel 插件
366 0
|
监控 安全 UED
阿里云全球加速GA
阿里云全球加速GA(Global Accelerator)是一款覆盖全球的互联网加速服务,主要目的是为了减少网络延迟、丢包,提高网络传输效率。这款服务可以应用于游戏加速、应用加速等场景,为用户构建一个高性能、高可靠、高安全、易部署的加速网络。
795 1
|
运维 中间件 Java
淘宝权益玩法平台的Serverless化实践
淘宝权益玩法平台的Serverless化实践
499 0
|
Java Linux Shell